我有一些代码可以打开链接。链接是可配置的,因此我正在做一些基本的错误处理。具体来说,我使用try / catch包装window.open()
调用,因为如果URL无效,内置API将引发异常。问题是,在Safari中,捕获量不会受到影响。
我试过浏览Safari API但我找不到任何好的信息。
以下示例在IE和Chrome中运行良好,但在Safari中无效。
$(function() {
$('button').on("click", function() {
try {
var begin = "http://<";
var opentag = "script>";
var stuff = "function(){alert('unsafe');}";
var all = begin + opentag + stuff;
window.open(all);
} catch (e) {
alert("errr");
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>
Click ME
</button>
答案 0 :(得分:1)
Barmar的评论是正确的。解决它的方法是获取window.open()的返回值并检查它是否返回任何内容。如果没有,那么它可能没有打开窗口。在这里阅读window.open()文档: https://developer.mozilla.org/en-US/docs/Web/API/Window/open
$(function() {
$('button').on("click", function() {
var x = null;
try {
var begin = "http://<";
var opentag = "script>";
var stuff = "function(){alert('unsafe');}";
var all = begin + opentag + stuff;
x = window.open(all);
} catch (e) {
alert("errr");
} finally {
if (!x) {
alert("errrrrrrrrr!");
}
}
});
});