我有一个js代码应该创建一个新的 iframe ,然后使用代码创建一个新的脚本并将创建的脚本插入创建 iframe 。


一切正常,除了回调,它在main的页面js中定义,我应该从插入的脚本,因为它未在创建的脚本中定义。


我的代码如下:



(function(){
 function makeIframe(adElement,callback){
 var iframe = document.createElement('iframe');
 iframe.appendChild(createScriptTag());

 adElement.appendChild(iframe);& #xD;
 adElement.parentNode.insertBefore(iframe,adElement);

 function createScriptTag(){
 var scriptTag = document.createElement('script');
 scriptTag.innerHTML = getFunctionBodyAsString(innerCode);
 return scriptTag;
}
 

 function innerCode(){
 callback();
}

 
函数getFunctionBodyAsString(有趣){&#的xD;
 return fun.toString()。match(/ function [^ {] + \ {([\ s \ S] *)\} $ /)[1];
 }&#的xD;
 }&#的xD;
&#的xD;
 makeIframe(document.getElementById('sth-id'),function(){
 alert(“Works!”)
});
&#xA ;
}());

 <!DOCTYPE html>
< html>
 <身体GT;&#的xD;
 < div id =“sth-id”>< / div>
 < script src =“test.js”>< / script>
 < / BODY>&#的xD;
< / HTML> 代码>
&#的xD;
 我的问题是,如何从creted 脚本中调用回调函数在创建的 iframe 中?


PS。我对js不是很有经验,任何提出代码的建议都是有希望的:)


更新1:
&# xA;
我可以在js 脚本(test.js)中定义我的回调函数的唯一地方,也是我应该从这个地方调用函数(例如 makeIframe ),它运行所有其他逻辑。

答案 0 :(得分:0)
因为您要避免加载外部脚本,所以您可以在HTML标记中包含所需的JS代码,并使用DOM API检索它。
<!DOCTYPE html>
<html>
<body>
<div id="sth-id"></div>
<script src="test.js"></script>
<script type="text" id="adScript">
//doWhatever alert('it works')
</script>
</body>
</html>
&#13;
<script>
function Sendmeaway() {
var item_i = document.getElementById("item_select").value;
if (item_i == "Initial_Value") {
alert("Please Select the Correct Option or Enter the Comment");
} else {
$.post("./back_p/add_change_req.php", {
item : item_i
},
function(data, textStatus) {
alert("Response from server: " + data);
document.getElementById("item_select").selectedIndex = 0;
location.reload();
});
}
};
</script>
&#13;