是否有一种方法可以覆盖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