然后查找执行动态加载的JavaScript方法

时间:2017-03-23 10:21:11

标签: javascript jquery

我有一段包含一些JavaScript的HTML

<iframe id=’myiFrame’><div id=’targetDiv’></div></iframe>

通过获取上述html的Ajax调用将其加载/注入iFrame中的目标div。

<iframe id=’myiFrame’><div id=’targetDiv’><div id=’abc’> Hello World</div><script> function myfunction() { alert (“hi”);}</script></div></iframe>

所以我有类似

的东西
(function(myframework, undefined ) {
    myframework.ButtonClickMethod = function()
{
    //this is the call to the dynamically  loaded method
    //but how do I find / reference this method
    myfunction();
}
}(document.myframework = document.myframework || {} ));

这一切都有效

我的问题是。如何在稍后的某个时间点执行myfunction()。如何查找/引用嵌入式JavaScript。 我知道这个问题中有很多ifs和buts。请假设DOM准备就绪等。 我将尝试从已经加载的JavaScript中执行myfunction()

var data = [{ F: 'a', T: 'z', V: 1 }, { F: 'b', T: 'z', V: 2 }, { F: 'c', T: 'z', V: 3 }],
    nodes = [],
    hash = Object.create(null);

data.forEach(function(element) {
    ['F', 'T'].forEach(function (k) {
        hash[element[k]] || nodes.push({ name: element[k] });
        hash[element[k]] = true;
    });
});

nodes.sort(function (a, b) { return a.name.localeCompare(b.name); });
console.log(nodes);

注意:在加载所有HTML和脚本后,一次点击一下按钮就会调用myframework.ButtonClickMethod。

由于我无法控制注入HTML / Javascript的位置,因此问题也变得复杂。它必须进入目标div。

我可以使用JQuery,但更喜欢vanilla JavaScript。

另外,请忽略问题中的任何拼写错误,我在Word中键入它,它会被放入&#39;等等。这是我感兴趣的机制。

1 个答案:

答案 0 :(得分:1)

一个不太吸引人的解决方案是使用jQuery来选择脚本标签html内容。然后使用类似this answer的内容使其成为自己的函数。