是否可以向所有动态生成的元素添加事件监听器(javascript)?我不是页面的所有者,所以我不能以静态方式添加监听器.
对于我使用的页面加载时创建的所有元素:
doc.body.addEventListener('click', function(e){
//my code
},true);
Run Code Online (Sandbox Code Playgroud)
我需要一个方法来在页面上出现新元素时调用此代码,但是我不能使用jQuery(委托,on等在我的项目中无法工作).我怎样才能做到这一点?
我有一个带有iframe的页面加载youtube视频(iframe的src在运行时被修改).我基于Rob W的代码提供了关于此主题的不同答案
<iframe id="browser" class="browser" scrolling="no" name="navigation"
src="http://www.youtube.com/embed/nOEw9iiopwI?enablejsapi=1" application="youtube" style="display:
inline;"></iframe>
Run Code Online (Sandbox Code Playgroud)
然后,当加载iframe时,执行以下代码:
$('.browser').load(function() {
dispose_ytplayer();
});
Run Code Online (Sandbox Code Playgroud)
被调用函数dispose_ytplayer()是:
function dispose_ytplayer() {
(function(){
var s = document.createElement("script");
s.src = "http://www.youtube.com/player_api";
var before = document.getElementsByTagName("script")[0];
before.parentNode.insertBefore(s, before);
})();
alert('called yt_dispose');
var ytIframeplayer;
function onYouTubePlayerAPIReady() {
alert('called onYouTubePlayerAPIReady');
ytIframeplayer = new YT.Player('browser', {
events: {
"onStateChange": stopCycle
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
但是从不调用第二个警报("调用onYouTubePlayerAPIReady"),我的chrome console.log显示来自www-embed_core_module-vflNmuGQq.js的错误消息:26:
不安全的JavaScript尝试使用URL http://www.youtube.com/embed/nOEw9iiopwI?enablejsapi=1从URL访问URL为http://mysite.com的框架.域,协议和端口必须匹配.
有任何想法吗?
如何收听HTML5视频的播放/停止/暂停事件?我尝试使用以下代码:
$("video").on('play',function(){
//my code here
});
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
或者我也可以截取停止并启动视频的点击(实际上我更喜欢),但即使这段代码也不起作用:
$('video').on('click', function(event) {
//my code here
});
Run Code Online (Sandbox Code Playgroud)
我认为因为经常在视频元素上方放置一个div,其中相关事件开始和停止,但我不知道如何通过jquery或javascript选择:
PS此代码应该适用于由我动态组合/不生成的页面,因此我无法引用指示其ID或特定类的元素.
UPDATE
我没有意识到我正在测试的页面在iframe中有一个视频.语法最适合我的需求:
doc.querySelector("video").addEventListener('play', function(e) {
//my code here
}, true);
Run Code Online (Sandbox Code Playgroud) javascript ×2
dom-events ×1
html5 ×1
html5-video ×1
iframe ×1
intercept ×1
jquery ×1
youtube ×1
youtube-api ×1