无法更改body元素的html
Unable to change html of body element
我想创建一个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 tag html的方法是什么?
哦,这似乎是工作,它看起来像一个难题。
替换整个页面的HTML(包括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.getElementsByTagName('body')[0].innerHTML='<html><head><script src=''a''></script></head><h1>Hello</h1>;return false;'">Click here</a>
</body>
</html>
好吧,这有点棘手,但我相信我弄明白了。基本上我是怎么做的,我去了一个简单的工作书签,在他们的href
属性上做了一个decodeURIComponent()
,并根据你想做的修改它。
让我知道它是如何为你工作的!
<!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>
使用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>
无jQuery方法:
<a href="javascript:document.getElementsByTagName('body').innerHTML = '<h1>Hello</h1>';">Click here</a>
相关文章:
- 我应该怎么做才能避免在网页上移动元素(html、css、jQuery)
- 更改元素HTML,但忽略最后一个子项
- 增加在选择元素HTML中搜索的时间
- Jquery无法获取元素html
- 从所选元素 html 上方的元素获取属性值
- 在 JS 的单选按钮元素 (HTML) 中使用 title 属性
- 如何在页面上播放每个音频元素(HTML,JQuery,Javascript)
- 我需要一种新的方法来检测元素 HTML 是否有更改
- 获取父元素 html 以及子内容
- AngularJS指令:如何在ng-repeat中动态更改元素html
- html 属性中的引号被标记为 ”来自元素.html()的结果
- 在指令's链接中替换angular元素html
- 如果元素有子元素html元素
- 如何下推表格中的元素- HTML
- 如何在纯javascript中使用变量插入数组值,如元素HTML
- jQuery textilate .js -如何“重置”元素HTML并重新启动动画
- 将元素HTML附加到新附加的textarea中
- 在添加类的情况下,CSS 3的过渡是否不能与模板元素(HTML 5)一起工作?
- jQuery没有更新DOM元素HTML
- 在jQuery中更快地替换元素HTML