IE6 Try/Catch 块不适用于自定义 document.someFunction 调用

发布于 2024-12-04 21:35:13 字数 564 浏览 0 评论 0原文

如何将一个函数附加到 IE6 中的全局文档对象,并且仍然能够捕获调用该函数时抛出的异常?

令人惊讶的是,在下面的示例中,异常不会传播到 IE6 中的函数之外:

// Declare function on document
document.someFn = function()
{
    throw new Error('Raised error');
}

// IE6: bug??
try{
    document.someFn('some parameter');
    alert('2. error has not been raised: bad!');
}
catch(err) {
}

您可以在此处尝试该示例和一些额外的测试用例:

http://www.pokret.org/stuff/ie6-bug-test.html

有任何解决方法吗?

How can I attach a function to the global document object in IE6, and still be able to catch exceptions thrown from that function when called?

Surprisingly, the exception does not propagate outside the function in IE6 in example below:

// Declare function on document
document.someFn = function()
{
    throw new Error('Raised error');
}

// IE6: bug??
try{
    document.someFn('some parameter');
    alert('2. error has not been raised: bad!');
}
catch(err) {
}

You can try out the example and some extra test cases here:

http://www.pokret.org/stuff/ie6-bug-test.html

Any workaround ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

紫竹語嫣☆ 2024-12-11 21:35:13

我知道这是一个非常古老的问题,但以防万一有人在我遇到同样的问题后出现,我发现这似乎有效:

// Declare function on document
document.someFn = function() {
  throw new Error('Raised error');
}

try {
  document.someFn.apply(null, 'some parameter');
  alert('2. error has not been raised: bad!');
}
catch(err) {
}

I know this is a monumentally old question, but just in case someone comes along after me running into the same problem, I've found that this seems to work:

// Declare function on document
document.someFn = function() {
  throw new Error('Raised error');
}

try {
  document.someFn.apply(null, 'some parameter');
  alert('2. error has not been raised: bad!');
}
catch(err) {
}
別甾虛僞 2024-12-11 21:35:13
function someFn ( txt ) {
    throw new Error( 'Raised error: ' + txt );
}

try {
    someFn( 'im dead' );
    alert( 'im alive' ); // will not be shown
} catch(err) {
    if( 'description' in err ) {
        alert( err.description ); // IE
    } else {
        alert( err ); // other browsers
    }

}

有关 尝试...catch 在 IE 中。

function someFn ( txt ) {
    throw new Error( 'Raised error: ' + txt );
}

try {
    someFn( 'im dead' );
    alert( 'im alive' ); // will not be shown
} catch(err) {
    if( 'description' in err ) {
        alert( err.description ); // IE
    } else {
        alert( err ); // other browsers
    }

}

MSDN article on try...catch in IE.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文