加载外部页面并替换文本


Load external page and Replace text

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

我们与广告活动合作,每当用户注册时,我们都会赚取一定的百分比。

脚本可以替换某些单词吗?例如"用户"到"Usuario"或"密码"到"Contraseña",而不影响原始网站或其功能。

注意:这些链接总是通过重定向。

示例:

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

注2:由于"同源政策",使用iframe是不可能的。

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

(也许你可以举一个循序渐进的例子,说明你正在努力实现什么?(

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

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

所以本质上:

  1. 浏览器从代理服务器1请求页面P
  2. 代理服务器1从其真实的主页服务器2检索实际的页面P
  3. 代理1将行<script src="//proxy1.com/transform.js"></script>添加到页面P的源
  4. 代理1然后将页面P的修改源返回给浏览器

一旦浏览器接收到页面内容,JavaScript文件也会被检索,然后可以以任何需要的方式修改页面内容。

此技术可用于解决您的"同源策略"问题,方法是从URL加载iframe,该URL指向与提供充当代理的iframe的父页或拥有页相同的服务器,如:

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

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

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

但是,请记住,一旦您将整个网页添加到自己页面中的div中,页面中的css就会对其产生影响。此外,您还需要操作文档中的所有链接,以获得绝对的url。如果页面依赖ajax,那么几乎没有办法完成您想要做的事情

另一方面,如果你要加载的页面是静态html,这是可能的,尽管在你真正向用户展示页面之前,你需要处理很多事情,比如调整链接、样式表的URL等等。这有道理吗?如果是这种情况,根据您的操作规模,有几个代理翻译服务(如果需要,我会命名它们(。

基本上,他们会抓取一个网站,为你提供一种翻译和托管翻译内容的方式。当然,这取决于您与内容提供商的关系。你也应该考虑到这一点,因为修改内容,即使是翻译,也可能是版权问题。

综合考虑,如果您信任提供商的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是最容易获得的。

希望这能有所帮助。

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

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

重定向u可以使用

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

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

答案是NO,而不是在不使用服务器端代理的情况下。有关如何使用代理的真正好的概述,请参阅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;
  });
});

错误:

XMLHttpRequest无法加载加载外部页面和替换文本。

请求的资源上不存在"Access Control Allow Origin"标头。原点'https://fiddle.jshell.net因此不允许访问。