我想在点击时创建一个bookmarklet应该替换body标签中的html内容。我已经使用了document.write
和document.getElementByTag('body')[0].innerHTML =
,但也都覆盖了head元素中的内容。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
<a href="javascript:document.write('<h1>Hello</h1>');">Click here</a>
<a href="javascript:document.getElementsByTagName('body')[0].innerHTML='<h1>Hello</h1>'">Click here</a>
</body>
</html>
在不删除javascript库的情况下替换body标签html的方法是什么?
答案 0 :(得分:1)
哦,这似乎是有效的,它看起来像一个谜题。
替换整个页面HTML(包括头元素,库等)使其工作:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
<a href="javascript:document.getElementsByTagName('body')[0].innerHTML='<html><head><script src=\'a\'></script></head><h1>Hello</h1>;return false;'">Click here</a>
</body>
</html>
答案 1 :(得分:0)
好的,这有点棘手,但我相信我弄清楚了。基本上我是怎么做到的,我去了一个简单的工作书签,在他们的decodeURIComponent()
属性上做了href
并根据你想要做的事情修改它。
让我知道它对你有用!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
<a href="javascript:((function(){var s=document.createElement('script');s.setAttribute('type','text/javascript');s.setAttribute('charset','UTF-8');s.innerHTML = 'document.body.innerHTML = \'<h1>Hello</h1>\''; document.documentElement.appendChild(s);})());">click here</a>
</body>
</html>
&#13;
答案 2 :(得分:-1)
使用jQuery:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="javascript:$('body').html('<h1>Hello</h1>');">Click here</a>
&#13;
无jQuery方式:
<a href="javascript:document.getElementsByTagName('body').innerHTML = '<h1>Hello</h1>';">Click here</a>
&#13;