作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想弄清楚为什么 stopPropagation 在与 google 闭包组件一起使用时不起作用。它适用于 browserEvents 但不适用于组件上的事件。请参阅下面的示例代码,该代码在您的浏览器上演示了该现象:
<html>
<head>
<script type="text/javascript" src="closure/goog/base.js"></script>
</head>
<body>
<div id="div1" style="border: 1px solid black; width: 500px; height: 300px; padding: 10px">
<div id="div2"></div>
</div>
<script>
goog.require('goog.dom');
goog.require('goog.ui.CustomButton');
goog.require('goog.ui.Component');
goog.require('goog.ui.Control');
goog.require('goog.style');
</script>
<script>
var outerBtn = new goog.ui.Control();
outerBtn.decorate(goog.dom.$('div1'));
var innerBtn = new goog.ui.CustomButton('Inner Button');
outerBtn.addChild(innerBtn, true);
outerBtn.setSupportedState(goog.ui.Component.State.FOCUSED, false);
innerBtn.setSupportedState(goog.ui.Component.State.FOCUSED, false)
goog.style.setStyle(innerBtn.getElement(), {
border : '1px solid red',
height : '100px'
});
goog.events.listen(outerBtn, goog.ui.Component.EventType.ACTION, function() {
console.info('outer');
});
goog.events.listen(innerBtn, goog.ui.Component.EventType.ACTION, function(e) {
console.info('inner');
e.stopPropagation();
});
</script>
</body>
</html>
最佳答案
您的示例输出:
inner
outer
在这种情况下,e.stopPropagation 工作正常。控制台输出“outer”是由于 outerBtn 自己的事件处理程序。没有从 innerBtn 中冒出来。此外,注释掉 e.stopPropagation,输出将改变如下:
innner
outer
outer
关于javascript - 谷歌闭包库 : stopPropagation on components,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13702319/
亲爱的 Javascript 程序员, Google 的 Closure Library 总是能让人抓狂。我希望您能在这个问题上帮助我: 我想通过 Closure 库中的函数内的 javascript
我正在尝试在 chrome 扩展的内容脚本中使用 google 闭包库。 这就是 manifest.json 中的 content_scripts 的样子 "content_scripts":
我正在使用 goog.dom.safeHtmlToNode 动态更新包含内容的选项卡 由于较新版本的 google 闭包库删除了 dom 片段方法:goog.dom.htmlToDocumentFra
我是一名优秀的程序员,十分优秀!