2011-04-02 81 views
1

好的,这里是侦察我的scenerio。我需要获取dom中所有元素的列表,甚至是动态加载的元素。如何访问jquery或javascript中的动态加载元素?

所以说,例如一个脚本元素与

var script=document.createElement('script'); 
script.type='text/javascript'; 
script.src='somejsfile.js'; 
    $("head").append(script); 

创建,如果我认为如下:

var doc = document.documentElement; 
var scripts = doc.getElementsByTagName("script"); 
for (var idx in scripts) 
{ 
    var s = scripts[idx]; 
    if (!s.src) continue; 
    s = s.src; 
    alert(s); 
} 

为什么我没有看到动态添加脚本?我在JQuery中尝试过,结果相同。

有没有人知道这是如何实现的?也许与dom令人耳目一新?

*只是要清楚:我想要的只是遍历dom并找到'脚本'元素的'src'属性,即使是动态加载的元素。

+0

它的工作时,我使用下面的代码'VAR headID = document.getElementsByTagName(“head”)[0] .appendChild(script);'不是'当'$('head')。append(script);' – 2011-04-02 05:40:44

+0

我想你误解了我的问题。我没有附加问题。它会被追加并执行得很好。之后我访问其'src'属性时遇到问题。 – Alvin 2011-04-02 05:59:10

回答

3

你把它添加到dom中吗?

var script=document.createElement('script'); 
script.type='text/javascript'; 
script.src='somejsfile.js'; 

$(script).appendTo("head"); //or body 
+0

是的,我做了,对不起,我忘了补充一点。它也可以在没有错误消息的情况下执行。 – Alvin 2011-04-02 05:29:10

+0

顺便说一句,'doc'是什么? – mattsven 2011-04-02 05:33:05

+0

我不想粘贴整个脚本,所以我拿了它的一部分。 Doc只是文档。 var doc = document.documentElement; – Alvin 2011-04-02 05:34:54

1

您需要先将动态创建的脚本以某种方式附加到DOM。这是一个万无一失的方式:

var ref=document.getElementsByTagName('script')[0], 
    script=document.createElement('script'); 
script.type='text/javascript'; 
script.src='somejsfile.js'; 
ref.parentNode.insertBefore(script, ref); 
+0

我确实追加了它,我忘了在问题中插入那一行。再次检查问题。谢谢。 – Alvin 2011-04-02 05:32:00

0

它看起来像NeXXeuS是正确的。您还可以追加新的元素没有jQuery的:

var newNode = document.createElement("script"); 
newNode.type = "text/javascript"; 
newNode.src = "somescript.js"; 
document.body.appendChild(newNode); 

尝试运行在Firefox或Chrome的JavaScript控制台内,你会看到新的脚本会添加附加在这种情况下,身体标记。

+0

我没有将外部javascript附加到dom的问题。它也执行得很好。但是,如果我通过dom添加它后尝试访问它,则无法找到它。 我只想循环浏览html文本页面,找到'script'元素的'src'属性,即使是动态加载的元素。 – Alvin 2011-04-02 05:53:39

0

您正在追加jquery,为什么不用jQuery来寻找它?

VAR脚本= $( '脚本')

甚至

VAR脚本= $( '脚本[来源]')

+0

这就是为什么我很担心。它不会把它拉起来。试过用铬,脚本执行它,所以它必须添加到DOM,但jQuery或JavaScript不让我找到它。 – Alvin 2011-04-02 05:56:13

相关问题