所以这就是我们的场景......我们首先要做的是,我们附加一段javascript代码,将外部脚本添加到文档中,如下所示:
(function() { var e = document.createElement('script'); e.type = 'text/javascript'; e.async = true; e.src = 'http://blabla.com/script.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(e, s); })();
然后script.js
发生以下情况:
function ajaxCall() { //... some script to send ajax request which calls createDiv() after success if (window.XMLHttpRequest){ xmlhttp=new XMLHttpRequest(); } else{ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==4&&xmlhttp.status==200){ createDiv(xmlhttp.responseText); } }; xmlhttp.open("GET","http://blabla.com/api/"); xmlhttp.send(); } function parseResponse(response) { var parser = new DOMParser(); var dom = parser.parseFromString(response, "text/html"); return dom; } function createDiv(responsetext) { var dom = parseResponse(responsetext); var _ws = dom.getElementById('styles'); var h = document.getElementsByTagName('head')[0]; h.appendChild(document.importNode(_ws, true)); var _jr = dom.getElementById('script1').outerHTML; var _vc = dom.getElementById('script2').outerHTML; var _rv = dom.getElementById('script3').outerHTML; var _rw = dom.getElementById('my_div'); var _b = document.getElementsByTagName('body')[0]; var _d = document.createElement('div'); _d.id = 'just_id'; _d.innerHTML = _jr + _vc + _rv; _d.appendChild(document.importNode(_rw, true)); _b.appendChild(_d); } ajaxCall();
一切正常,脚本和div按预期和预期的方式被追加,但附加的脚本不会被执行,也不会影响附加的div.这是为什么?我怎样才能让它执行?我们也没有在控制台中收到任何警告/错误.使用最新的Firefox.
编辑1
注释:您展示的示例脚本只定义了函数,但它实际上从未调用它们
它实际上调用了一个发出ajax请求的函数,请检查编辑过的代码片段.
编辑2
评论:您是否尝试将逻辑放入回调中,然后在createDiv中调用它?可能会添加一些日志来测试它是否被调用但无法找到div
我只是尝试console.log('hello world');
调用其中一个脚本,这些脚本被createDiv()
函数追加,但它什么也没做.
编辑3
更多细节.当页面加载时,我可以看到
Tags | 热门标签RankList | 热门文章
- 1如何在R包传单中添加比例尺?
- 2Plivo红宝石宝石类冲突
- 3比较C#对象
- 4简单的ASP经典程序不起作用
- 5如何检查字典中是否存在键值对?
- 6将值传递给路由
- 7如何从AppVeyor发布beta nuget包
- 8Python导入结构
- 9UIRefreshControl显示在UICollectionViews Cells之上
- 10C++析构函数分段错误
- 11Scala Slick:永无止境
- 12如何在不在浏览器中打开页面的情况下运行ASP.NET 5
- 13使用Swift Package Manager添加目标依赖项时出错
- 14检查列的每一行是否在范围内
- 15TcpClient通过NetworkStream BinaryReader / BinaryWriter传输的字节计数
- 16Tensorflow:多GPU单输入队列
- 17流畅的Nhibernate Automapping with overrides:映射未映射的基类集合
- 18带有where子句和group by的SQL max()函数不能有效地使用索引
- 19内联块元素不与省略号溢出垂直对齐
- 20Android:在父进程退出后,停止运行Bonjour服务