什麼是跨瀏覽器方法?我需要防止對圖像執行任何默認操作,以便拖動或其他任何操作都不會在默認的基礎上觸發。我們如何防止JavaScript中的默認操作?
回答
您只能取消特定事件。您不能「全局取消」默認操作。
爲了具體取消dragging
的圖像(其僅是缺省功能在某些瀏覽器),則返回false
到mousedown
事件。
您可以全局取消很多默認操作,但不是全部。在這種情況下(原諒糟糕的代碼)'document.onmousedown = function(e){if(typeof e =='undefined')e = window.event; if(e.preventDefault)e.preventDefault();如果(e.stopPagagation)e.stopPropagation(); e.returnValue = false;返回false; };但顯然這會產生很多令人討厭的副作用。 – eyelidlessness 2009-12-11 07:09:02
的確如此,這會產生令人討厭的副作用,但肯定更多的是全球概念。 – 2009-12-11 07:10:55
補充:適用於幾乎任何氣泡的事件。對於「事件授權」(顯然這是一個重疊的概念,並不完全是1:1)和非冒泡事件已經取得了一些進展,但我不知道這些事件是如何實現的。我知道jQuery最近的alpha已經開始實現這些,所以它可能值得一看。 – eyelidlessness 2009-12-11 07:14:01
您可以註冊要取消的活動,然後從其中註冊return false
或使用Event.preventDefault()
,具體取決於瀏覽器和事件。
這不適用於跨瀏覽器。但是海報並未指定哪些瀏覽器是針對的。 – squiddle 2009-12-11 10:28:49
(function() {
var onmousedown;
if('onmousedown' in document && typeof document.onmousedown == 'function') {
onmousedown = document.onmousedown;
}
document.onmousedown = function(e) {
if(typeof e == 'undefined') {
e = window.event;
}
if(!e.target) {
e.target = e.srcElement || document;
}
if('nodeName' in e.target && e.target.nodeName.toLowerCase() == 'img') {
if(e.preventDefault) {
e.preventDefault();
}
// If you want to register mousedown events for
// elements containing images, you will want to
// remove the next four lines.
if(e.stopPropagation) {
e.stopPropagation();
}
e.cancelBubble = true;
e.returnValue = false;
return false;
}
if(onmousedown !== undefined) {
onmousedown(e);
}
};
})();
你可能需要做一些類似你想阻止其他事件的東西,如果你想要的東西,這並不這樣做。
另外值得注意的是,如果您試圖阻止人們將圖片從網頁下載到他們的計算機上,您將無法獲得成功。如果瀏覽器可以下載圖像,用戶也可以下載。使用JavaScript來阻止(一些)嘗試很容易通過簡單地禁用JavaScript來繞過。
- 1. 防止默認操作
- 2. 如何防止使用JavaScript的錨標記的默認操作?
- 3. 圖像裁剪:如何防止默認拖拽拖放操作?
- 4. 如何在Ajax中防止JQuery中的默認操作調用結果條件
- 5. 防止默認操作,但不要停止傳播事件
- 6. 的Javascript防止默認代碼
- 7. 防止在Chrome中對tab鍵執行默認操作?
- 8. 如何在我們阻止它時恢復默認操作密鑰?
- 9. 防止使用jQuery Ajax時的默認操作
- 10. 防止默認onkeyup事件在JavaScript
- 11. javascript功能防止默認問題
- 12. 綁定Aurelia事件處理程序可防止默認操作
- 13. 如何防止默認並禁用href
- 14. 如何防止刪除「默認」實體?
- 15. 阻止使用IE8的默認操作
- 16. jquery防止默認不起作用
- 17. 防止默認不正常工作
- 18. ng-submit防止默認動作 - 意思?
- 19. jQuery防止輸入默認動作
- 20. PHP AJAX防止默認
- 21. Jquery .click防止默認onClick
- 22. 幫助與防止默認
- 23. jQuery - 撤消防止默認
- 24. Jquery撤消 - 防止默認
- 25. 防止默認添加deps.js
- 26. 我如何防止加載默認的大禮包screen.css
- 27. 如何防止我們(多人)遊戲中的作弊行爲?
- 28. 我如何取消默認操作,如果用戶在我的應用程序中將我的操作設置爲默認操作?
- 29. 防止默認如果父母hasClass()
- 30. 在Silverlight中防止密鑰默認值
請說明你的問題 – Pierreten 2009-12-11 07:03:13
一切都很清楚。仔細讀。 – 2009-12-11 07:19:13
艾倫安德森,如果有人要求你澄清你的問題,你可能會認爲,你看起來很清楚的東西並不一定對其他人清楚。你的問題是非常不清楚的。 – eyelidlessness 2009-12-11 08:10:56