通过javascript添加href - 糟糕的MSIE错误?

时间:2013-01-07 22:08:21

标签: javascript html

通过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();
                        }
                    }
                }
            }
        }

2 个答案:

答案 0 :(得分: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

OR

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

答案 1 :(得分:0)

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