3

谁能解释为什么这会在 IE7 中引发错误?这表明错误发生在“var newStr.....”行上

它不会在任何其他浏览器中发生。

$(document).ready(function() {
    $('a[onclick*="_self"]').each(function() {
        var newOnclick = $(this).attr('onclick');
        var newStr = newOnclick.replace('_self','_parent');
        $(this).attr('onclick', newStr);
    });
});
4

2 回答 2

1

IE 的(早期版本)无法在您请求时将函数对象强制转换为它的源。因此,字符串不能那么容易地交换。

您可以用新的 _parent 函数替换整个旧的“_self”函数,例如:

$('a[onclick*="_self"]').attr('onclick', function() { _parent-stuff });

或 - 我阅读了您的最后一条评论,第二个解决方案对您不起作用,因为它需要更改正文的 HTML。

于 2012-12-23T00:21:00.163 回答
0

尝试这个:

$(document).ready(function() {
  $('a[onclick*="_self"]').each(function() {
    var newOnclick = $(this).attr('onclick').toString();
    var newStr = newOnclick.replace('_self','_parent');
    if($.browser.msie && parseFloat($.browser.version) == 7) {
       newStr = newStr.replace('onclick="function anonymous()
{
','onclick="');
       newStr = newStr.replace('}"','"');
    }
    $(this).attr('onclick', newStr);
    //$(this).unbind();
    //$(this).bind('click', function () { eval(newStr); });
  });
});
于 2012-12-23T00:29:17.187 回答