首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javascript dom检查代码在IE上不起作用

javascript dom检查代码在IE上不起作用
EN

Stack Overflow用户
提问于 2010-10-26 20:18:26
回答 3查看 233关注 0票数 2

这个问题是针对JS专家的。

我使用下一段代码来获取dom根目录下存在的所有JavaScript函数名。

代码语言:javascript
运行
复制
  for(var x in window){ 
        val = ""+window[x];

       if(startsWith(val,"function")){  //only functions 
          alert(val)
       }
   } 

虽然这段代码在火狐和Chrome上运行得很好,但在IE8上似乎就行不通了。这些函数似乎不存在于IE中的窗口元素下。

你知道我该如何在IE上工作吗?谢谢!

EN

回答 3

Stack Overflow用户

发布于 2010-10-26 20:40:02

代码语言:javascript
运行
复制
var arrScripts = document.getElementsByTagName("script");
for (var i = 0; i < arrScripts.length; i++)
    alert(arrScripts[i].innerHTML);

不像Chrome或FF提供的那样优雅,但它仍然可以工作。不过,希望有人能有更好的办法。:)

票数 0
EN

Stack Overflow用户

发布于 2010-10-26 23:40:01

关于原生方法:在IE8中,你可以访问Window.prototype来获取它们:

代码语言:javascript
运行
复制
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=100" >
<title>Test</title>
</head>
<body>
<ul style="font:normal 12px monospace;">
<script type="text/jscript">
<!--
try{
var win=Window.prototype;
for(var k in win)document.write('<li><strong style="color:blue">'+k+':</strong>'+win[k]+'</li>');
}catch(e){alert('[Window.prototype] not supported');}
//-->
</script>
</ul>
</body>
</html>

请注意,IE8必须在ie8模式下运行,否则Window (大写W)将是未知的。

如果显式地分配给window-object,则用户创建的函数应该是可用的。

代码语言:javascript
运行
复制
a=function(){}//will not work
function b(){}//will not work
window.c=function(){}//this will work
票数 0
EN

Stack Overflow用户

发布于 2010-10-26 23:52:04

您可以使用typeof()直接确定它是否为函数,而不必将其转换为字符串:

代码语言:javascript
运行
复制
for(var x in window){ 
      val = window[x];
     if(typeof(val)=="function"){  //only functions 
        alert(""+val);
     }
 } 

(请注意,我已经将它转换为alert()的字符串,因此您可以看到它仍然在做同样的事情;根据您的目标,您可能甚至不需要这样做)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4023558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档