是否有一種方法可以覆蓋window.location.reload的默認行爲 - 使其成爲無操作,用於調試目的?以編程方式禁用window.location.reload?
回答
問題是,由於某種原因,location.reload
實際上不是Firefox和Chrome中的可寫屬性。這是我想出的一些瘋狂的方式在這些瀏覽器中覆蓋它(和其他)。它使用非標準的.__defineGetter__()
方法,部分是爲了繞開window.location = "/home.html"
的魔法干擾。
var _location = location;
__defineGetter__('location', function() {
var s = new String(_location);
for(i in _location) (function(i) {
s.__defineGetter__(i, function() {
return typeof _location[i] == 'function' ? function(){} : _location[i];
});
s.__defineSetter__(i, function(){});
})(i);
return s;
});
__defineSetter__('location', function(){});
將所得模擬對象應防止任何函數調用(包括.reload
)或分配(設定.href
)從實際發生作用。或者,您可以將您的測試限制爲可以寫入.reload
的IE,Safari和Opera。
在Opera 11.60中無效:「'未處理的錯誤:__defineGetter__:無效修改不可配置的屬性「。 – XP1 2012-01-21 19:22:43
在Chrome上靜默失敗 – 2013-02-19 23:11:41
現在由於Chrome上的錯誤而失敗。 – MasterScrat 2018-02-15 08:49:29
您必須在自調用函數中調用此代碼,除非它不起作用。
(function(location){
...
})(window.location);
這也在Chrome中靜默失敗 – 2016-12-12 17:51:47
- 1. 以編程方式啓用/禁用Log4jLogger?
- 2. 以編程方式禁用麥克風
- 3. 以編程方式禁用Firefox擴展
- 4. 以編程方式禁用Spring Security
- 5. Spring Boot - 以編程方式禁用AutoConfiguration
- 6. 以編程方式禁用gif動畫
- 7. 以編程方式禁用ScollViewer滾動
- 8. UIWebView以編程方式禁用縮放
- 9. 以編程方式禁用ipv4/ipv6
- 10. 以編程方式禁用FirebaseMessagingService
- 11. 以編程方式禁用Alertview
- 12. 以編程方式啓用/禁用沉浸模式
- 13. 如何以編程方式禁用com +應用程序?
- 14. 以編程方式禁用縱向方向鎖定
- 15. 以編程方式禁用Visual Studio代碼格式
- 16. 編程方式禁用屏幕超時
- 17. 編程方式禁用大寫鎖定
- 18. 如何以編程方式啓用/禁用Windows功能
- 19. 使用sharepoint webservices以編程方式禁用'必需簽出'
- 20. 在Windows 7上以編程方式啓用/禁用連接
- 21. 以編程方式啓用/禁用實體代理
- 22. 以編程方式啓用/禁用藍牙配置文件
- 23. 如何以編程方式啓用/禁用Azure功能
- 24. 以編程方式爲特定用戶角色禁用稅收
- 25. 如何以編程方式啓用/禁用IE代理設置?
- 26. 以編程方式啓用和禁用某些@ RabbitListener的Spring?
- 27. 如何以編程方式啓用/禁用移動數據
- 28. 以編程方式啓用/禁用鍵盤聲音和振動
- 29. 如何在rooted android上以編程方式禁用/啓用gps?
- 30. 是否可以通過編程方式啓用/禁用硬件?
我的第一個猜測是'window.location.reload = function(){}'但這不起作用,至少在Firefox上。 – 2011-03-05 15:12:20
應該是可能的 - 參見[Javascript - 覆蓋或阻止執行](http://stackoverflow.com/questions/850090/javascript-override-or-prevent-execution) – 2011-03-05 15:12:36
'window.location.reload = function(){} '適用於Firefox 4 – 2011-03-06 07:58:11