0

以下のようにJavaScriptを介してhrefを追加するのは悪い習慣ですか?IE8では、ページが更新されていてもステータスバーが継続的に読み込まれているのがわかります。以下のコードが原因で、ステータスバーが発生していると思われます。

document.getElementById('sucessMsgId').innerHTML = 'Your profile has been updated. <a href='+xProfileUri+'>View Profile</a>';

それを行う正しい方法は何ですか?jQueryを使用して上記のコードを修正すると、IEステータスバーの読み込みの問題を解決できますか?

更新:IEブラウザのステータスがjQUeryコードのこの部分に入り、実行を終了しないため、継続的に読み込まれていることがわかりました。これは、ロードイベントをiframeにアタッチし、IE8でのみ発生する場合に発生します。

for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
            matched = handlerQueue[ i ];
            event.currentTarget = matched.elem;

            for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
                handleObj = matched.matches[ j ];

                // Triggered event must either 1) be non-exclusive and have no namespace, or
                // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
                if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {

                    event.data = handleObj.data;
                    event.handleObj = handleObj;

                    ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
                            .apply( matched.elem, args );

                    if ( ret !== undefined ) {
                        event.result = ret;
                        if ( ret === false ) {
                            event.preventDefault();
                            event.stopPropagation();
                        }
                    }
                }
            }
        }
4

2 に答える 2

0

何が含まれているかによりますxProfileUri。引用符で囲まれたURLが含まれている場合は、問題ありません。URI文字列の前後の二重引用符を忘れないようにしてください。これは、innerHTML割り当て文字列で、またはURI値をに割り当てるときに実行できますxProfileUri

編集:あなたが次のものを持っていると仮定します

var xProfileUri = 'http://google.com';
document.getElementById('successMsgId').innerHTML = 'Your profile has been updated. <a href='+xProfileUri+'>View Profile</a>';

これにより、次のHTMLが出力されます。

Your profile has been updated <a href=http://google.com>View Profile</a>

ただし、そのhref属性は二重引用符で囲まれていないため、適切に形成されていません。代わりに、次のいずれかがあることを確認してください。

var xProfileUri = '"http://google.com"';
//note the double quotes within the single quotes

また

document.getElementById('successMsgId').innerHTML =
    'Your profile has been updated. <a href="'+xProfileUri+'">View Profile</a>';
//note the double quotes after the = sign and before the greater-than sign
于 2013-01-07T22:30:25.330 に答える
0

これは、複数のイベントが同時に発生し、UIが同時に成功メッセージで更新されたことが原因でした。UIを更新する関数呼び出しにsetTimeoutを追加することにより、UIの更新を遅らせました。

于 2013-01-17T21:08:27.780 に答える