是否可以在容器中加载外部页面并替换文本元素?
我们与广告活动合作,每当用户注册时,我们都会赚取一定的百分比。
脚本可以替换某些单词吗?例如"用户"到"Usuario"或"密码"到"Contraseña",而不影响原始网站或其功能。
注意:这些链接总是通过重定向。
示例:
http://a2g-secure.com/?E=/0yTeQmWHoKOlN6zUciCXQwUzfnVGPGN&s1=
注2:由于"同源政策",使用iframe是不可能的。
我不确定这是否能回答您的问题,但您可能会发现它很有用。
(也许你可以举一个循序渐进的例子,说明你正在努力实现什么?(
如果我们假设浏览器试图从代理检索页面p,该代理首先从页面p的实际主页检索页面p的内容,然后在将页面内容返回到浏览器之前对其内容执行一些转换,那么您所描述的是Reverse HTTP Proxy
,这是一种非常著名的页面服务技术。
这种技术通常用于向检索到的源中注入一行代码,而不是在服务器上执行复杂的转换(这需要页面布局的专业知识(,该代码调用JavaScript文件,以便在浏览器上实际执行所需的转换。
所以本质上:
- 浏览器从代理服务器1请求页面P
- 代理服务器1从其真实的主页服务器2检索实际的页面P
- 代理1将行
<script src="//proxy1.com/transform.js"></script>
添加到页面P的源 - 代理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因此不允许访问。