3

タイトルの通りです。Chrome と Firefox で動作しますが、IE9 だけでこの問題が発生します。フレームを直接ターゲットにすると機能します(example.com/#target)オブジェクトがロードされていないという問題ではないと思います

    setInterval("myFunc()",1);      

    function myFunc(){   
    if ($(shop).is(":target")) {
        $('#nav').removeClass('nav').addClass('navopen');
        $('#content').removeClass('content').addClass('contenthide');
        $('.bgopen').removeClass('bgopen');
        $('#shpbg').addClass('bgopen'); 
    } else if ($(about).is(":target")) {
        $('#nav').removeClass('nav').addClass('navopen');
        $('#content').removeClass('content').addClass('contenthide');
        $('.bgopen').removeClass('bgopen');
        $('#abtbg').addClass('bgopen'); 
    } else if ($(contact).is(":target")) {
        $('#nav').removeClass('nav').addClass('navopen');
        $('#content').removeClass('content').addClass('contenthide');
        $('.bgopen').removeClass('bgopen');
        $('#cntbg').addClass('bgopen'); 
    } else if ($(blog).is(":target")) {
        $('#nav').removeClass('nav').addClass('navopen');
        $('#content').removeClass('content').addClass('contenthide');
        $('.bgopen').removeClass('bgopen');
        $('#extbg').addClass('bgopen'); 
    } else if ($(collective).is(":target")) {
        $('#nav').removeClass('nav').addClass('navopen');
        $('#content').removeClass('content').addClass('contenthide');
        $('.bgopen').removeClass('bgopen');
        $('#colbg').addClass('bgopen'); 
    } else if ($(main).is(":target")) {
        $('#nav').removeClass('navopen').addClass('nav');
        $('#content').removeClass('contenthide').addClass('content');
        $('.bgopen').removeClass('bgopen'); 
        $('#bgmain').addClass('bgopen');
    } else if ($(pmt).is(":target")) {
        $('#nav').removeClass('nav').addClass('navopen');
        $('#content').removeClass('content').addClass('contenthide');
        $('.bgopen').removeClass('bgopen');
        $('#abtbg').addClass('bgopen'); 
    }

    else {

    }}

ウィンドウ(ロード)、ドキュメント(準備完了)でラップしようとしましたが、役に立ちませんでした...

4

1 に答える 1

1

コードを本当にリファクタリングする必要があります。

あなたの場合、1ミリ秒の遅延を伴う間隔の設定は役に立たず、ブラウザが間隔コールバック関数を呼び出す最小値がこの1ミリ秒を超えているため、バグが発生する可能性があります。

ロジック コードを変更して、代わりにこれを試してください。

setInterval(myFunc,100);
于 2012-11-14T12:52:38.800 に答える