试图在Chrome扩展中添加一个功能,以防止scmplayer在页面访问时自动播放
Trying to add a feature to a Chrome Extension that will prevent scmplayer from autoplaying on page visits
我正在使用JavaScript和jQuery编写Chrome扩展,除其他外,我希望它能防止scmplayer在用户访问的页面上自动播放。以下是在启用自动播放设置的情况下向页面添加scmplayer的典型示例:
<script type="text/javascript" src="http://scmplayer.net/script.js"
data-config="{
'skin':'skins/cyber/skin.css',
'volume':50,
'autoplay':true, <!-- The autoplay setting -->
'shuffle':true,
'repeat':1,
'placement':'top',
'showplaylist':false,
'playlist':[{'title':'Bauhaus, %22Antonin Artaud%22','url':'http://www.youtube.com/watch?v=VJS9SKz7yog'},
...
">
</script>
我认为应该在脚本有机会运行之前编辑脚本的data-config属性,将'autoplay':true
更改为'autoplay':false
。
如何使用jQuery或Javascript完成这一点?
那么,有没有一种特别好的方法可以在Chrome扩展中修改这个脚本的数据配置属性?或者,如果有更好的方法来防止scmplayer自动播放,我该怎么做?
您可以使用SCM API在像这样启动之前暂停/停止,
SCM.pause();
SCM
在这里是一个全局范围变量。
但是chrome扩展的内容脚本是在一个孤立的环境中执行的,所以你不能直接从你的扩展content.js.访问这个变量
您必须向页面注入javascript代码。
这是我的扩展文件,
content.js
var actualCode = '(' + function() {
function stopScm() {
try {
SCM.pause();
alert("scm player was stopped");
} catch(e) {
setTimeout(stopScm, 1000);
}
}
stopScm();
} + ')();';
var script = document.createElement('script');
script.textContent = actualCode;
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
manifest.json
{
"name": "Stops SCM player",
"version": "0.2",
"manifest_version": 2,
"description": "Example",
"permissions": [
"http://dl.dropboxusercontent.com/u/39457223/bountify/16/"
],
"content_scripts": [ {
"matches": ["http://dl.dropboxusercontent.com/u/39457223/bountify/16/*"],
"js": ["content.js"],
"run_at": "document_end"
}
]
}
- 这是压缩的扩展名文件(.crx)
- 这是运行扩展的演示页面
编辑:
在你分享了那个网址之后,我在那个网址上尝试了我的扩展。是的,它不起作用。
问题是扩展代码在加载scmframe
之前运行。
scmframe
是由SCM脚本附加的<iframe>
的静态id。
所以等待加载iframe会更好,试试这个内容脚本,它也在处理你的URL。
content.js
$("#scmframe").load(function() {
var actualCode = '(' + function() {
function stopScm() {
try {
SCM.pause();
} catch(e) {
setTimeout(stopScm(), 1000);
}
}
stopScm();
} + ')();';
var script = document.createElement('script');
script.textContent = actualCode;
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
});
相关文章:
- 我可以使此幻灯片图像自动播放吗?
- 如何使jquery自动播放
- 在移动设备中自动播放视频
- 需要帮助自定义幻灯片自动播放
- 在iframe中阻止网站中的vimeo自动播放
- 使用addevent时,VideoJs的自动播放未被触发
- 为简单的jQuery滑块添加自动播放功能
- iframe src 使用现有值在单击时添加自动播放=true 参数
- 如何降低html视频的自动播放音量
- 如何在向下滚动时停止自动播放
- 自动播放youtube视频的Javascript
- 10秒后停止自动播放-环岛
- 如何在HTML5画布上自动播放短视频剪辑
- 在按钮上单击暂停HTML视频(正在自动播放)
- 检测iOS移动设备的JavaScript比自动播放音频
- 我怎么能自动使用JavaScript函数来自动播放幻灯片呢
- 停止在Chrome上自动播放嵌入的Javascript歌曲
- Javascript自动播放声音文件,单击其中一个按钮时停止
- 如何使这个滑块自动播放图像而不是点击
- 试图在Chrome扩展中添加一个功能,以防止scmplayer在页面访问时自动播放