分析以下代码:
<html>
<head>
</head>
<body>
<div id="d1"></div>
<div id="d2"></div>
<script>
var a1 = "<div>a1</div><script>alert('a1');<\/script>";
var a2 = "<script>alert('a2');<\/script>"
document.getElementById("d1").innerHTML = a1;
document.getElementById("d2").innerHTML = a2;
</script>
</body>
</html>
上面代码中分别往【d1】和【d2】中通过 innerHTML 插入了一段 HTML 代码,且均包含有 SCRIPT 标签。区别为【d1】中插入的 HTML 代码比【d2】中在最开始多了一个 DIV 元素。
在 IE 中只弹出了 "a1" 提示框,即只有字符串 "a1" 中的脚本执行。这是 IE 的一个 Bug,所以通常为了使 innerHTML 插入的脚本能够在 IE 中正常执行,经常会在欲插入的 HTML 代码字符串的最开始增加一个不可见的元素。如:
<span style="display:none;">span</span><script>alert('a1');<\/script>
参考:http://www.w3help.org/zh-cn/causes/BX9029
分享到:
相关推荐
这就是为什么在`innerHTML`中插入的JS代码不执行的原因。 为了解决这个问题,我们可以采用以下几种方法: 1. **使用`document.createElement`和`element.appendChild`**:这种方法创建和操作DOM元素是安全的,因为...
本文将深入探讨一个特定的问题,即在Internet Explorer 6、7和8(以下简称IE6/7/8)浏览器中使用`innerHTML`属性清空元素时,其子元素也会被一并清空的特性。这个现象在其他现代浏览器中并不常见,因此了解这一问题...
解决 Ajax 返回 innerHTML 中 ...解决 Ajax 返回 innerHTML 中 JavaScript 不能运行问题的关键是将 JavaScript 代码从 Ajax 返回的数据中提取出来,并将其添加到 `<head>` 中,让浏览器能够正确地解析和执行。
- **问题**:在IE8中,属性的排序方式发生了变化,这可能会影响属性集合以及`innerHTML` 和 `outerHTML` 的值。如果页面依赖于特定的属性排序,那么可能会出现问题。 - **解决方案**:建议通过属性名而不是位置来...
然而,Firefox、Opera和其他非IE浏览器并不遵循这一行为,它们不论`defer`属性是否存在,都不会执行插入的`innerHTML`中的脚本。 要解决这个问题,我们需要手动提取并执行`innerHTML`中的脚本。以下是一种可能的...
但是,需要注意的是,innerText 属性只适用于 IE 浏览器,在其他浏览器中可能不支持。 outerHTML 属性 outerHTML 属性用于获取 HTML 元素中的所有内容,包括 HTML 元素本身。例如,在上面的代码中,test.outerHTML...
1. **浏览器兼容性**:由于IE6、IE7和IE8是微软早期的浏览器版本,它们对现代Web标准的支持并不完善,存在许多已知的兼容性问题。JavaScript开发者通常需要额外的努力来确保代码在这些旧版本的浏览器中正常运行。...
7. **AJAX**:Asynchronous JavaScript and XML,虽然名称中包含XML,但实际并不限于它,而是用于在不刷新整个页面的情况下,异步地从服务器获取数据并更新页面。XMLHttpRequest对象是实现AJAX的核心,而现在更常用...
IE6-IE9中tbody的innerHTML不能赋值,重现代码如下 Js代码 <!DOCTYPE html> <html> <head> <meta charset=utf-8/> <title>IE6-IE9中tbody的innerHTML不能复制bug</title> </...
本文将详细探讨一个特定的问题,即在IE6和IE7中使用`innerHTML`属性获取`<object>`标签内的`<param>`子标签时的区别。 `innerHTML`是JavaScript中用于设置或获取元素内HTML内容的属性。当你访问一个元素的`...
既然只在文档加载中才被解析,那么我就得调用[removed]()方法来重新加载一次,但是这样的话原来页面的内容也会被覆盖掉了,所以不得不用IFRAME把[removed]()装载起来。 解决问题 var jsCode = 需要执行的JS代码 ...
然而,在Internet Explorer(尤其是版本6、7和8)中,innerHTML的返回值在处理英文空格时存在一些特殊的行为,这可能导致与其它浏览器不一致的结果。这个问题可能会对前端开发者的代码兼容性带来困扰。 首先,让...
python的xpath没有获取div标签内html内容的功能,也就是获取div或a标签中的innerhtml,写了个小程序实现一下: 源代码 [webadmin@centos7 csdnd4q] #162> vim /mywork/python/csdnd4q/z040.py #去掉最外层标签,...
因此,为了兼容IE8,我们需要使用其特有的`document.all`对象和`innerHTML`属性来创建、修改和删除DOM元素。例如,创建新元素时,可能需要使用`document.createElement('<div>')`代替`document.createElement('div')...
5. **DOM操作**:使用IE8兼容的方式处理DOM操作,例如避免使用`innerHTML`,而是采用`createElement`、`appendChild`等方法来创建和操作DOM元素。 6. **XDomainRequest**:对于跨域请求,IE8使用的是XDomainRequest...
通过上述的分析和解决方案,用户可以有效解决在IE8中使用js插件时,设置innerHTML导致的“未知运行时错误”。这些方法对提高JavaScript程序设计的兼容性和鲁棒性具有一定的帮助。同时,也是对编写跨浏览器代码的一种...