我有一个带有超链接的HTML网页。点击此链接后,在另一个窗口中打开相同的网页,并使用window.open
将哈希值附加到网址。示例网址http://mywebsite.com#hash=value
在网页上有一个Javascript函数,它检查url中的这个哈希值,并调用父窗口的Javascript函数,如果它找到了哈希值:
// if required hashvalue is in the url
if(hashvalue){
window.parent.func(hashvalue);
window.close();
}
以下是在同一网页上定义的功能:
function func(hashvalue){
var turl = 'some url';
alert(hashvalue)
jQuery.ajax({
method: "GET",
url: turl,
dataType: "jsonp",
jsonp : "callback",
success: function(response) {
alert(response)
}, error: function(x, y, z){
alert(JSON.stringify(x) + "\r\n" + JSON.stringify(y))
}
});
}
点击链接后会发生以下情况:
弹出窗口,其中哈希值附加到网址。正在检查哈希值,正在调用Javascript函数func
,alert(hashvalue)
警报和弹出窗口关闭。问题是,第二个警报alert(response)
没有被调用。我检查了浏览器控制台,没有任何错误。
如果我删除window.close();
(弹出窗口未关闭),则第二个警报alert(response)
也会被调用。
我希望关闭弹出窗口并完全执行函数func
。
答案 0 :(得分:1)
在关闭窗口之前,您没有给第二个功能足够的时间进行调用。您可以在父窗口中设置第二个功能,如果需要可以设置超时,以便始终可以执行操作。