加载外部页面和替换文本

时间:2016-03-15 05:34:02

标签: javascript php jquery html ajax

是否可以在容器中加载外部页面并替换文本元素?

我们处理广告活动,并在用户注册时获得百分比。

脚本可以替换某些单词吗?例如“User”到“Usuario”或“Password”到“Contraseña”而不影响原始网站或其功能。

注意:这些链接始终通过重定向。

示例:

http://a2g-secure.com/?E=/0yTeQmWHoKOlN6zUciCXQwUzfnVGPGN&s1=

注2:由于“同源策略”,使用iframe是不可能的。

5 个答案:

答案 0 :(得分:2)

您需要加载外部页面服务器端,然后您可以随意执行任何操作。您可以执行服务器端字符串替换,也可以稍后在javascript中执行。

但是,请记住,只要您在自己的网页中添加整个网页(例如div),您网页上的css就会对其产生影响。 另外,您需要操作文档中的所有链接,以获得绝对URL。如果页面依赖于ajax,那么几乎没有办法完成你想要做的事情。

另一方面,如果您要加载的页面是静态html,则有可能,但是在您真正向用户呈现页面之前需要注意很多事情,例如调整链接, url to stylesheets等。

答案 1 :(得分:2)

我不确定这是否能解答您的问题,但您可能会发现它很有用。

(也许您可能会逐步说明您要完成的任务?)

如果我们假设浏览器尝试从代理中检索页面P,该代理首先从其实际主页检索页面P的内容,然后在将该页面内容返回到浏览器之前对其内容执行某些转换,那么你是什么描述是Reverse HTTP Proxy,是一种非常着名的页面服务技术。

这种技术通常用于在检索到的源中注入一行来调用JavaScript文件以在浏览器中实际执行所需的转换,而不是在服务器上执行复杂的转换(需要专门的页面布局知识)。

所以实质上:

  1. 浏览器从代理服务器1请求页面P.
  2. 代理服务器1从其真实的主服务器2中检索实际的页面P.
  3. 代理服务器1将行<script src="//proxy1.com/transform.js"></script>添加到Page P.
  4. 的来源
  5. 然后,代理服务器1将已修改的Page P源返回给浏览器。
  6. 浏览器收到页面内容后,还会检索JavaScript文件,然后以任何方式修改页面内容。

    此技术可用于解决“同源策略”问题,方法是从指向同一服务器的URL加载iframe,该服务器提供作为代理的iframe的父级或拥有页面的服务器,像:

    http://example.com/?proxy_target=//server2.com/pageP.html
    

    因此,浏览器只能“看到”来自单个服务器的内容。

答案 2 :(得分:1)

您似乎正在尝试使用服务器作为该内容的代理来动态本地化网站。是否有意义?如果是这种情况,根据您的操作规模,有几种代理翻译服务(如果需要,我会给他们命名)。

基本上,他们搜索网站,为您提供翻译和托管翻译内容的方式。当然,这取决于您与内容提供商的关系。您还应该考虑到这一点,因为修改内容,甚至是翻译,都可能是版权问题。

考虑到所有事情,如果您信任提供商的javascript,解决方案涉及抓取内容,如其他答案中所述,并提供修改后的内容。你真的需要相信原点......

按请求更新

http://www.easyling.com

http://www.smartling.com

http://www.motionpoint.com

http://www.lionbridge.com/solutions/translation-proxy/

http://www.sajan.com/translation-proxy-technology-and-traditional-website-translation-understanding-your-options/

它们都是针对企业级项目的,但我想说Easyling是最容易访问的。

希望这有帮助。

答案 3 :(得分:0)

使用.load()回调函数,这将替换文本

$(function(){
$("#Content").load("http://example.com?user=Usuario",function() {
    $(this).html($(this).html().replace("user", +get param value+));
}); 

重定向你可以使用

// similar behavior as an HTTP redirect
window.location.replace("url");


// similar behavior as clicking on a link
window.location.href = "url";

答案 4 :(得分:0)

答案是否定的,不是没有使用服务器端代理。有关如何使用代理的真实概述,请参阅此YUI页面:https://developer.yahoo.com/javascript/howto-proxy.html(请耐心等待,因为加载需要时间,但插图是值得的!)

当我尝试在jsfiddle中执行此操作以查看3个参数包含的数据时,将显示以下错误:

$(function() {
    $(this).load('https://stackoverflow.com/questions/36003367/load-external-page-and-replace-text', function(responseText, textStatus, jqXHR){
    debugger;
  });
});

ERROR:

XMLHttpRequest无法加载Load external page and Replace text

请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“https://fiddle.jshell.net”访问。