使用XMLhttpRequest获得了一点ajax,它取代了div并按预期工作。
但我似乎无法获得包含的ajax页面来运行javascript。如何从包含的ajax页面运行javascript?
ie:mainpage.php有选择形式,在选择更改事件includepage.php被加载到页面上的div并根据选择框中选择的内容进行更改,这个工作正常并且按照预期使用xmlhttp,问题即时通讯正试图从包含的页面运行javascript,即:一个简单的警报框。
没有代码可以真正过去,也许这是一个标准的行为,但我找不到任何信息,所以任何帮助如何从一个包含的ajax页面中替换一个div运行javascript将非常感激。< / p>
答案 0 :(得分:1)
您似乎对代码没有任何想法吗?
所以我给你一个关于这个的例子
一页page1.aspx
有一个javascript函数调用abc()
现在您可以将此功能添加到主页面并添加uc(usercontrol)
并像这样调用此函数
var aa=abc(
);
所以abc将被称为
如果您分别有两个页面,那么您也可以调用此函数,因为当JavaScript呈现到浏览器中时,它会根据您在页面上包含的文件而自负
答案 1 :(得分:1)
当您通过innerHTML
在内容中插入脚本时,浏览器不会运行这些脚本。
如果您希望它们运行,那么您需要在该内容中找到脚本,从中获取文本并将它们插入到新脚本中,然后将其插入到文档中。只要脚本不需要使用document.write()
就地运行,这就可以正常运行,像jQuery这样的库在将HTML插入文档时会自动为您执行此操作。
以下是有关其工作原理的基本演示:http://jsfiddle.net/jfriend00/2tRQW/
// insert dynamic content that has a script in it
// simulate what's happening with your ajax call
var s = 'Hello<s' + 'cript>alert("Hello"); document.getElementById("result").style.color = "red";</s' + 'cript>';
var obj = document.getElementById("result");
obj.innerHTML = s;
// find the script tags in that dynamic content
var scripts = obj.getElementsByTagName("script");
// create new script tags that you can copy the script content over to
// and then insert the new script tags into the document to make the browser
// actually run the scripts
var head = document.getElementsByTagName("head")[0];
for (var i = 0; i < scripts.length; i++) {
var oldScript = scripts[i].parentNode.removeChild(scripts[i]);
var newScript = document.createElement("script");
newScript.type = "text/javascript";
newScript.textContent = oldScript.textContent;
head.appendChild(newScript);
}