getJSONP("ph.php", call); 函数被调用了 2 次。结果,创建了 2 个脚本元素 - 在 getJSONP.eee 函数中执行。getJSONP.eee 函数被覆盖。这意味着两个脚本元素将执行相同的 getJSONP.eee 函数 - 其中脚本变量是最后一个脚本标记。
问题:为什么在第二次调用警报(脚本);表示该元素存在,尽管它在第一次调用时被删除。错误是 TypeError: script.parentNode is null
function call(a) {
alert(a);
}
function getJSONP(url, callback) {
url += "?jsonp=getJSONP.eee";
var script = document.createElement("script");
alert(7);
getJSONP.eee = function(response) {
script.title="two"; // Для отслеживания тег взаимодейстия
alert(document.getElementsByTagName("script").length); // Сколько всего тегов
callback(response); // Результат
alert(script); // Проверить на наличие тега
script.parentNode.removeChild(script); // Удалить тег
alert(script); // Проверить на наличие тега. Почему есть?
};
script.src = url;
document.body.appendChild(script);
if(t==1) script.title="one"; // Для отслеживания тег взаимодейстия
}
var t = 1;
getJSONP( "ph.php", call);
getJSONP( "ph.php", call); // При этом getJSONP.eee - перезаписывается
<?php
$seq = array("foo", "bar", "baz", "blong");
$json = json_encode($seq);
echo $_GET['jsonp'].'('.$json.')';
嗯,有点像这样,不是吗。