Javascript html()删除脚本和样式
有没有一种方法可以使用jQuery.html()而不丢失脚本和样式?或者任何其他非jQuery方式 我试图输出用户所在页面的完整HTML。这可能吗 html()删除脚本和样式 这不是我的经验(见下文)。在实践中,您必须意识到,通过查询DOM中的HTML字符串得到的结果总是经过解释的HTML,而不是原始的HTML,并且会有一些奇怪之处(例如,在IE上,所有HTML标记名都是大写的)。这是因为jQuery的Javascript html()删除脚本和样式,javascript,jquery,html,coding-style,Javascript,Jquery,Html,Coding Style,有没有一种方法可以使用jQuery.html()而不丢失脚本和样式?或者任何其他非jQuery方式 我试图输出用户所在页面的完整HTML。这可能吗 html()删除脚本和样式 这不是我的经验(见下文)。在实践中,您必须意识到,通过查询DOM中的HTML字符串得到的结果总是经过解释的HTML,而不是原始的HTML,并且会有一些奇怪之处(例如,在IE上,所有HTML标记名都是大写的)。这是因为jQuery的html函数依赖于浏览器的innerHTML属性,该属性在不同浏览器中略有不同。但下面的演示包
html
函数依赖于浏览器的innerHTML
属性,该属性在不同浏览器中略有不同。但下面的演示包括Chrome4、IE7和Firefox3.6上的样式和脚本标签;我没有试过其他的,但我希望他们没事
如果您想获得外部链接页面的内容以及内联内容,您自然需要解析结果并遵循src
(在script
s上)、href
(在link
s上具有rel
=“样式表”)等
演示:
测试页
身体{
字体系列:无衬线;
}
(功能(){
$(文档).ready(pageInit);
函数pageInit(){
$('btnGo')。单击(go);
}
函数go(){
警报($('html').html());
}
})();
我在这里看到两种情况
$('html').html()
我不确定我是否完全理解你。如果您不想丢失脚本和样式,而这些脚本和样式似乎只想修改body标记的内容。是这样吗?或者你也想在头部添加新的脚本和样式?在这种情况下,您应该在单独的函数上注册样式和脚本。然后附加你的身体内容。您甚至可以使用JS动态设置doctype和所有内容。所以应该都很好你用什么浏览器?
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Test Page</title>
<style type='text/css'>
body {
font-family: sans-serif;
}
</style>
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'></script>
<script type='text/javascript'>
(function() {
$(document).ready(pageInit);
function pageInit() {
$('#btnGo').click(go);
}
function go() {
alert($('html').html());
}
})();
</script>
</head>
<body>
<input type='button' id='btnGo' value='Go'>
</body>
</html>