Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图向Chrome扩展添加一项功能,以防止scmplayer在页面访问时自动播放_Javascript_Jquery_Google Chrome Extension - Fatal编程技术网

Javascript 试图向Chrome扩展添加一项功能,以防止scmplayer在页面访问时自动播放

Javascript 试图向Chrome扩展添加一项功能,以防止scmplayer在页面访问时自动播放,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我正在使用JavaScript和jQuery编写一个Chrome扩展,除此之外,我希望它能够防止scmplayer在用户访问的页面上自动播放。以下是在启用自动播放设置的情况下,向页面添加scmplayer的典型示例: <script type="text/javascript" src="http://scmplayer.net/script.js" data-config="{ 'skin':'skins/cyber/skin.css', 'vol

我正在使用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>
您可以在这样开始之前使用暂停/停止

SCM.pause();
SCM
在这里是一个全局范围变量

但是chrome扩展的内容脚本是在一个隔离的环境中执行的,所以您不能直接从extension content.js访问这个变量

您必须将javascript代码注入页面

这是我的扩展文件

content.js manifest.json
编辑: 在您共享该url后,我尝试了在该url上扩展。 是的,它不起作用

问题是扩展代码在加载
scmframe
之前运行

scmframe
是由SCM脚本附加的
的静态id

所以等待iframe被加载会更好,试试这个内容脚本,它也可以处理你的URL

content.js
谢谢现在需要处理另一个问题,但我会尽快进行测试。抛出此错误:“拒绝执行内联脚本,因为它违反了以下内容安全策略指令:”script src'self'chrome extension resource:“@user1452893,我刚刚做了一个示例,它正在工作。如果可能的话,我可以看到你的
manifest.json
或你的扩展吗?我通过添加”网络可访问资源“:[“content.js”]到我的清单。不幸的是,我现在可以显示我的扩展名。但是,我创建的content.js与您完全一样,并且修改了清单,但是它仍然不起作用。您可以显示您的示例吗?@user1452893,好的,我已经更新了我的答案,包括
.crx文件
和演示页面。您可以看到下面的
manifest.json
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);
{
  "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"
    }
  ] 
}
$("#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);
});