是否可以在容器中加载外部页面并替换文本元素?
我们处理广告活动,并在用户注册时获得百分比。
脚本可以替换某些单词吗?例如“User”到“Usuario”或“Password”到“Contraseña”而不影响原始网站或其功能。
注意:这些链接始终通过重定向。
示例:
http://a2g-secure.com/?E=/0yTeQmWHoKOlN6zUciCXQwUzfnVGPGN&s1=
注2:由于“同源策略”,使用iframe是不可能的。
答案 0 :(得分:2)
您需要加载外部页面服务器端,然后您可以随意执行任何操作。您可以执行服务器端字符串替换,也可以稍后在javascript中执行。
但是,请记住,只要您在自己的网页中添加整个网页(例如div),您网页上的css就会对其产生影响。 另外,您需要操作文档中的所有链接,以获得绝对URL。如果页面依赖于ajax,那么几乎没有办法完成你想要做的事情。
另一方面,如果您要加载的页面是静态html,则有可能,但是在您真正向用户呈现页面之前需要注意很多事情,例如调整链接, url to stylesheets等。
答案 1 :(得分:2)
我不确定这是否能解答您的问题,但您可能会发现它很有用。
(也许您可能会逐步说明您要完成的任务?)
如果我们假设浏览器尝试从代理中检索页面P,该代理首先从其实际主页检索页面P的内容,然后在将该页面内容返回到浏览器之前对其内容执行某些转换,那么你是什么描述是Reverse HTTP Proxy
,是一种非常着名的页面服务技术。
这种技术通常用于在检索到的源中注入一行来调用JavaScript文件以在浏览器中实际执行所需的转换,而不是在服务器上执行复杂的转换(需要专门的页面布局知识)。
所以实质上:
<script src="//proxy1.com/transform.js"></script>
添加到Page P. 浏览器收到页面内容后,还会检索JavaScript文件,然后以任何方式修改页面内容。
此技术可用于解决“同源策略”问题,方法是从指向同一服务器的URL加载iframe
,该服务器提供作为代理的iframe的父级或拥有页面的服务器,像:
http://example.com/?proxy_target=//server2.com/pageP.html
因此,浏览器只能“看到”来自单个服务器的内容。
答案 2 :(得分:1)
您似乎正在尝试使用服务器作为该内容的代理来动态本地化网站。是否有意义?如果是这种情况,根据您的操作规模,有几种代理翻译服务(如果需要,我会给他们命名)。
基本上,他们搜索网站,为您提供翻译和托管翻译内容的方式。当然,这取决于您与内容提供商的关系。您还应该考虑到这一点,因为修改内容,甚至是翻译,都可能是版权问题。
考虑到所有事情,如果您信任提供商的javascript,解决方案涉及抓取内容,如其他答案中所述,并提供修改后的内容。你真的需要相信原点......
按请求更新
http://www.lionbridge.com/solutions/translation-proxy/
它们都是针对企业级项目的,但我想说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”访问。