动态加载html文件并执行其javascript内容。[英] Dynamical loading of html files and executing of its javascript content.

问题描述

大家好,
我正在使用一点"ajax"加载器脚本动态加载文件到
不同的"div"我的主要网站上的标签.这部分的代码看起来
喜欢:

函数加载器(){
var args = loader.arguments;
开关 (args[0]) { 案例
"加载页面":
if (document.getElementById) {
var x = (window.ActiveXObject) ?新的
ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();//创建
xmlhttp对象
}
如果 (x) {
x.onreadystatechange = function() {
if (x.readyState == 4 && x.status == 200) {
el = document.getElementById(args[2]);
var viewData = x.responseText;
splitcode(el, viewData, args[2]);
}
}
x.open(args[3], args[1], true);
x.send(args[4]);
}
休息;
}
}

即:我通过以下方式调用它: loader(''load_page'', ''test/test.html'', ''main'',
''GET'', ''null'');

现在,我想执行 test.html 中的 javascript.为此
我写了 splitcode() 的目的,它搜索 <scripttags 和
执行它们.. 这看起来像:

函数 splitcode(el, viewData, id) {
var regexp1 =/var regexp2 =/var regexp3 =/<script src(.|\n)*?>(.|\n|\r\n)*?<\/script>/ig;
var regexp4 =/src.*\s\b/ig;

/* 先绘制html */
htmlpart = viewData.replace(regexp1, "");
el.innerHTML = htmlpart;

var 结果 = viewData.match(regexp3);

如果(结果){
for (var i = 0; i < result.length; i++) {
var srcScript = 结果[i].match(regexp4);
srcScript += "";
srcScript = srcScript.substr(5, srcScript.length-7);
var scriptContainer = document.createElement(''SCRIPT'');
var scriptContainerSrc = document.createAttribute(''src'');
var scriptContainerType = document.createAttribute(''type'');

scriptContainerSrc.value = srcScript;
scriptContainerType.value = "text/javascript";
scriptContainer.setAttributeNode(scriptContainerSr c);
scriptContainer.setAttributeNode(scriptContainerType);

document.getElementsByTagName("head")
[0].appendChild(scriptContainer);
}
}
var 结果 = viewData.match(regexp1);

如果(结果){
for (var i = 0; i < result.length; i++) {
var realScript = result[i].match(regexp2);
执行脚本(realScript[2]);
}
}
}
函数执行脚本(scriptFrag){
var scriptContainer = document.createElement(''SCRIPT'');
document.getElementsByTagName("head")
[0].appendChild(scriptContainer);
scriptContainer.text = scriptFrag;
}
这一切都在Firefox中运行良好.但是对于 IE 和 Safari 来说
根本不会做!至少 IE,让我执行
中提到的功能test.html 一次,但后来好像丢失了javascript
代码还是找不到了...

非常感谢任何克服这个问题的想法!

Moka Toka

推荐答案

mo****@googlemail.com 在 2007 年 5 月 30 日上午 9:43 发表了以下言论:
大家好,
我正在使用一点"ajax"加载器脚本动态加载文件到
不同的"div"我的主要网站上的标签.这部分的代码看起来
喜欢:
<snip<
现在,我想执行 test.html 中的 javascript.为此
我写了 splitcode() 的目的,它搜索 <scripttags 和
执行它们..这看起来像:
<网址:
http://groups.google.com/group/comp.lang.javascript/search?group=comp.lang.javascript&q=dynamically+sc ript+randy+webb+execute>

并开始阅读.在这 62 首热门歌曲中,大多数都是关于你的真实身份
尝试做 - 在 HTML 之后执行加载到 HTML 文件中的脚本
插入到文档中.
函数 splitcode(el, viewData, id) {
var regexp1 =/var regexp2 =/var regexp3 =/<script src(.|\n)*?>(.|\n|\r\n)*?<\/script>/ig;
var regexp4 =/src.*\s\b/ig;

/* 先绘制html */
htmlpart = viewData.replace(regexp1, "");
el.innerHTML = htmlpart;
就在这里,而不是像你一样搜索,抓住
的脚本节点el 元素.那么有没有源属性就无所谓了
或内联脚本,你有块.然后检查它们的 src
相应的属性和代码.

<常见问题解答>

如何执行通过 AJAX 检索到的脚本?
</常见问题解答>
那是我自己和任何人的评论的标记
对这个问题有任何想法/意见.

--
兰迪
机会偏爱有准备的头脑
comp.lang.javascript 常见问题解答 - http://jibbering.com/faq/index.html
Javascript 最佳实践 - http://www.JavascriptToolbox.com/bestpractices/

5 月 31 日上午 10:22,Randy Webb <HikksNotAtH...@aol.com 写道:
[...]
<常见问题***RY>

如何执行通过 AJAX 检索到的脚本?
</FAQ***RY>
那是我自己和任何人的评论的标记
对这个问题有任何想法/意见.
好点子.既然你建议了,我就给你标准FAQ
维护者回应:发表您的最大努力进行批评,看看是什么
结果.;-)
--
Rob


5 月 30 日下午 3:43,mow...@googlemail.com 写道:
函数执行脚本(scriptFrag){
var scriptContainer = document.createElement(''SCRIPT'');
document.getElementsByTagName("head")
[0].appendChild(scriptContainer);
scriptContainer.text = scriptFrag;
}
您应该设置 scriptContainer
的 .text 属性在它被附加到头部之前.


本文地址:https://www.itbaoku.cn/post/1050520.html