【发布时间】:2011-10-30 18:27:34
【问题描述】:
我需要赶上为google maps autocomplete 取回建议的事件。我知道它是无证的,但做一些研究我发现它可能通过一些原型黑客攻击而被关闭。
<input type='text' id='myInput'>
<script src="http://maps.google.com/maps/api/js?libraries=places&sensor=false&language=en-EN"></script>
<script>
function catcher(key) { console.log(key); }
function MyProto() {}
MyProto.prototype = new google.maps.MVCObject();
MyProto.prototype.changed = catcher;
var gAuto = new google.maps.places.Autocomplete(
document.getElementById('myInput'), ['geocode']);
// one of two should be commented
//gAuto.__proto__.__proto__.changed = catcher; // every key, including 'predictions'
gAuto.__proto__.__proto__ = MyProto.prototype; // only 'types', '0', and 'place' when selected
</script>
JSFiddle 链接:http://jsfiddle.net/agentcooper/hRyTF/(查看控制台)
检查最后两行。当直接在 MVCObject 原型(第一个,评论)上设置“更改”功能时,一切正常,我可以在“捕手”功能中捕捉关键“预测”。问题是,例如,如果我需要在我的页面上有两个自动完成实例,则 catcher 需要有所不同。因此,当我尝试在自动完成的原型链(最后一行)中注入自定义对象时,一切都失败了。有没有办法解决这个问题?
编辑: working version,感谢 Sajid :-)
更新:Completed the code,也许对任何人都有帮助
【问题讨论】:
标签: javascript google-maps-api-3 function-prototypes