通过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();
}
}
}
}
}
答案 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的更新。