3

これがIE7でエラーをスローしている理由を誰かが説明できますか?「varnewStr.....」の行でエラーが発生していることを示しています。

他のブラウザでは発生していません。

$(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は、要求したときに関数オブジェクトをそのソースにキャストできません。したがって、文字列を簡単に交換することはできません。

古い「_self」関数全体を新しい_parent関数に置き換えることができます。例:

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

または-最後のコメントを読みましたが、本文のHTMLを変更する必要があるため、2番目の解決策は機能しません。

于 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 に答える