我有问题。 我们正在做一个强制性门户网站。
转到任何网站,例如www.php.net 然后在Chrome的控制台中,使用:
$("html").load( "https://www.ccc.co.il/Suspend.aspx" );
您会注意到,DOM已被替换,但不是应该如此: 加载的网页(例如标题,正文)的包装元素丢失了!
这会在注入的页面上引起问题。
如何替换整个初始DOM? 请不要使用链接或正常重定向向我建议。 这些是限制,我需要替换整个DOM树。
谢谢!
答案 0 :(得分:2)
这基本上是浏览器的一项功能。
以下是来自.load()的jQuery文档的剪辑:
jQuery使用浏览器的.innerHTML属性来解析检索到的文档并将其插入到当前文档中。在此过程中,浏览器通常会过滤文档中的元素,例如
<html>
,<title>
或<head>
元素。因此,.load()检索的元素可能与浏览器直接检索文档的内容不完全相同。
虽然我不建议您提出建议,但我会尝试回答您的问题:
使用服务器端语言(例如PHP),将文档作为已解析的json:
返回{
"head": [head string],
"body": [body string]
}
然后您的JavaScript可以单独替换每个元素。
您需要从.load()
切换到更可配置的内容,例如.ajax()
答案 1 :(得分:0)
我认为在这种情况下你必须使用iframe,因为我认为你不能用另一个替换整个DOM。
$('body').html("<iframe height=100% width=100% frameBorder=0 src='https://www.ccc.co.il/Suspend.aspx'></iframe>");
答案 2 :(得分:0)
$.get("https://www.ccc.co.il/Suspend.aspx", function(html){$("html").html(html)});
我在这里使用常规的AJAX函数,因为它不应该剥离任何东西。
对于连续4个html
抱歉。 :P