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

这是由于同时发生了多个事件,并且 UI 同时使用成功消息进行更新。通过向更新 UI 的函数调用添加 setTimeout 来延迟 UI 的更新。

于 2013-01-17T21:08:27.780 回答
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 回答