A-Hole


The a-hole module is a devious module which breaks JavaScript that doesn't use dependency injection or isolate itself from unexpected elements that could show up through object inheritance. Since there is quite a bit in Drupal that doesn't do this installing this module causes core JavaScript to break and thus break you site.

Install this module at your own risk. If you want to break your site go for it.

Different browsers will break in different ways. In my personal experience IE breaks the worst while Chrome breaks the least. None the less, stuff breaks (though jQuery core handles everything well and doesn't break).

This module is designed to exploit bad development practices. If you're code uses dependency injection and properly isolates itself from the outside scripts
this module won't make a difference. Unfortunately there is a lot of JavaScript in Drupal core that doesn't do this so stuff will break in some browsers just by enabling this module.

The dependency injection part can be solved by wrapping your code in something like:

(function($, window, document, undefined) {
  ...
})(jQuery, this, this.document)

This wrapper is a self executing function which passes in jQuery, the global object (window and this are the same here), and the document. You'll notice undefined has nothing passed in for it. This makes sure the value is undefined.

This isn't the only want to solve the scoping problem but it is a successful way.

Another thing we often do is iterate over the properties in an object. If we don't check that the property is one for our current object you may end up with properties defined up the object inheritance chain popping up in our loops. For example:

Object.prototype.foo = 'bar';

var hot = {
  e: 'ieio',
  boom: 'stick'
};

for (var burn in hot) {
  if (hot.hasOwnProperty(burn)) {
    alert(hot[burn]);
  }
}

'bar' would be one of the items alerted to us if we didn't have the wrapper of:

if (hot.hasOwnProperty(burn)) {
  ...
}

This is because it is up the inheritance chain for objects.


A-Hole项目的Drush安装命令:复制到剪贴板

注:个别模块仍需开启相关子模块。
周安装量: 
0
维护状态: 
最低限度维护
开发状态: 
仅修复BUG,不添加新功能

推荐版本下载:

版本下载地址发布日期发布说明翻译下载
8.x-1.0-alpha1tar.gz (7.33 KB) | zip (8.2 KB)2011年4月27日发布说明简 | 繁 | 更多