0
在我的網頁我有一個繁忙的指標是這樣的:禁用繁忙指示,如果的onclick返回false
window.onload = setupFunc;
function setupFunc() {
document.getElementsByTagName('body')[0].onclick = clickFunc;
hideBusysign();
}
function hideBusysign() {
document.body.style.cursor='default';
}
function showBusysign() {
document.body.style.cursor='progress';
}
function clickFunc(eventData) {
var clickedElement = (window.event) ? event.srcElement : eventData.target;
if ((clickedElement.tagName.toUpperCase() == 'BUTTON' || clickedElement.tagName.toUpperCase() == 'A') || clickedElement.parentNode.tagName.toUpperCase() == 'A'
|| (clickedElement.tagName.toUpperCase() == 'INPUT' && (clickedElement.type.toUpperCase() == 'BUTTON' || clickedElement.type.toUpperCase() == 'SUBMIT')))
&& clickedElement.parentNode.id.toUpperCase() != 'NOBUSY' ) {
showBusysign();
}
}
(爲了簡單起見我已刪除了Ajax請求的部分)
的問題是:如果有一個鏈接< a href = ... onclick = ...並且onclick返回false,那麼href不是「執行」,但忙指標繼續(並且不再停止)。
我已經改變了
clickedElement.tagName.toUpperCase() == 'A'
到
(clickedElement.tagName.toUpperCase() == 'A'
&& ! clickedElement.hasAttribute("onclick"))
但這並不是一個嚴重的解決方案,因爲它假定與onclick屬性鏈接將永遠不會去的HREF。
如果onclick將返回true或false,是否有可能以通用方式知道如果href將被請求或不?
我不明白 - 如果一個錨標記有一個href屬性,並且href是一個實際的url,那麼默認行爲是瀏覽器去那個位置。爲什麼它會返回false? –