部署 Google Chrome 扩展; Adobe Flash Player 已停止潜在的不安全操作

2024-02-20

我想知道如何最好地处理 Google Chrome 扩展内部没有足够权限的问题。我正在与 YouTube API 交互,但我没有使用 swfobject.js,只是使用 am embdeeded div。我不认为这会引起我的安全问题,但也许确实如此。

在开发过程中,我必须导航到 Adob​​e 的 flash 播放器安全页面并将我的开发文件夹指定为“安全”位置。在部署中,我没有能力做到这一点。我不希望我的用户必须在 Flash Player 安全性上单击“全部允许”,但我没有看到其他方法来实现我的结果。

有人有处理这个问题的经验吗?我有什么选择?

似乎是重复的Chrome 扩展程序中的 SWFobject - API 不可用 https://stackoverflow.com/questions/7274415/swfobject-in-a-chrome-extension-api-unavaiable但仍未得到答复。

Source: https://github.com/MeoMix/YouPod https://github.com/MeoMix/YouPod

要运行:从存储库中提取,加载 Chrome,单击扳手,转到扩展,检查“开发人员工具”-> 加载解压的扩展并浏览到该文件夹​​。

行动中:http://www.meomixes.com/Chrome%20Extension.crx http://www.meomixes.com/Chrome%20Extension.crx


由于来源限制,您不能使用<object>元素。相反,嵌入一个<iframe>并使用 YouTube 播放器 API 与框架进行通信。

更换你的function onYouTubePlayerReady and function Initialize(playlist)与以下内容(在background.js http://pastebin.com/cQFZQWQe):

function Initialize(playlist) {
    port = chrome.extension.connect({ name: "statusPoller" });
    if (!player) {
        YT_ready(function() {
            var frameID = getFrameID("MusicHolder");
            if (frameID) {
                player = new YT.Player(frameID, {
                    events: {
                        "onReady": function() {
                            player.cueVideoById(playlist[0].ID, 0);
                        },
                        "onStateChange": onPlayerStateChange
                    }
                });
            }
        });
    } else {
        // Only reload if the player is not playing. Otherwise, the music
        // stops when re-opening the popup.
        if (player.getPlayerState && player.getPlayerState() != PLAYING) {
            player.cueVideoById(playlist[0].ID, 0);
        }
    }
}

要使之前的代码正常工作,您必须加载另一个脚本background.htm http://pastebin.com/rWJNpc1G。的内容youtube-player-api-helper.js http://pastebin.com/KfsRj9rD基于我之前的回答使用 JavaScript 或 jQuery 监听 Youtube 事件 https://stackoverflow.com/a/7988536/938089?listening-for-youtube-event-in-javascript-or-jquery:

// @description Easier way to implement the YouTube JavaScript API
// @author      Rob W
// @global      getFrameID(id) Quick way to find the iframe object which corresponds to the given ID.
// @global      YT_ready(Function:function [, Boolean:qeue_at_start])
// @global      onYouTubePlayerAPIReady()  - Used to trigger the qeued functions
// @website     https://stackoverflow.com/a/7988536/938089?listening-for-youtube-event-in-javascript-or-jquery

function getFrameID(id) {
    var elem = document.getElementById(id);
    if (elem) {
        if(/^iframe$/i.test(elem.tagName)) return id; //Frame, OK
        // else: Look for frame
        var elems = elem.getElementsByTagName("iframe");
        if (!elems.length) return null; //No iframe found, FAILURE
        for (var i=0; i<elems.length; i++) {
           if (/^https?:\/\/(?:www\.)?youtube(?:-nocookie)?\.com(\/|$)/i.test(elems[i].src)) break;
        }
        elem = elems[i]; //The only, or the best iFrame
        if (elem.id) return elem.id; //Existing ID, return it
        // else: Create a new ID
        do { //Keep postfixing `-frame` until the ID is unique
            id += "-frame";
        } while (document.getElementById(id));
        elem.id = id;
        return id;
    }
    // If no element, return null.
    return null;
}

// Define YT_ready function.
var YT_ready = (function() {
    var onReady_funcs = [], api_isReady = false;
    /* @param func function     Function to execute on ready
     * @param func Boolean      If true, all qeued functions are executed
     * @param b_before Boolean  If true, the func will added to the first
                                 position in the queue*/
    return function(func, b_before) {
        if (func === true) {
            api_isReady = true;
            for (var i=0; i<onReady_funcs.length; i++){
                // Removes the first func from the array, and execute func
                onReady_funcs.shift()();
            }
        }
        else if(typeof func == "function") {
            if (api_isReady) func();
            else onReady_funcs[b_before?"unshift":"push"](func); 
        }
    }
})();
// This function will be called when the API is fully loaded
function onYouTubePlayerAPIReady() {YT_ready(true);}

// Load YouTube Frame API
(function() { //Closure, to not leak to the scope
  var s = document.createElement("script");
  s.src = "http://www.youtube.com/player_api"; /* Load Player API*/
  var before = document.getElementsByTagName("script")[0];
  before.parentNode.insertBefore(s, before);
})();

额外变更的说明(奖励):

  • background.htm: <!DOCTYPE html />是无效的。它应该是:<!DOCTYPE html>.
  • All .htm files: The type属性是可选的<script>标签。即使您想指定一个,也可以使用application/javascript代替text/javascript。两者都可以在 Chrome 扩展中使用,但第一个更正确。
  • popup.js: Changed detection of ctrl+c. Instead of detecting and remembering whether Ctrl was pressed, use the e.ctrlKey property.
  • 还有更多。看一下popup.js http://pastebin.com/kVwtEK9e,并搜索RobW:找到我的注释。

修改文件

更新文件摘要(基于您的Github 仓库 https://github.com/MeoMix/YouPod/tree/master/YouPod):

  • YouPod/background.htm http://pastebin.com/rWJNpc1G
  • YouPod/popup.htm http://pastebin.com/grrZAVn9 (文档类型修复,占位符焦点的评论建议)
  • YouPod/js/background.js http://pastebin.com/cQFZQWQe
  • YouPod/js/popup.js http://pastebin.com/kVwtEK9e
  • YouPad/js/youtube-player-api-helper.js http://pastebin.com/KfsRj9rD New
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

部署 Google Chrome 扩展; Adobe Flash Player 已停止潜在的不安全操作 的相关文章

  • 如何使用 JavaScript 创建链接?

    我有一个标题字符串和一个链接字符串 我不知道如何将两者放在一起以使用 JavaScript 在页面上创建链接 任何帮助表示赞赏 我试图解决这个问题的原因是因为我有一个 RSS 源并且有一个标题和 URL 列表 我想将标题链接到 URL 以使
  • 在 contenteditable div 中选择范围

    我有一个contenteditablediv 和其中的一些段落 这是我的代码 div style border solid 1px black width 300px height 300px div Hello world div div
  • 是否存在 IsCallable 为 false 但 IsConstructor 为 true 的 JS 对象?

    ECMAScript 规范函数可调用 https www ecma international org ecma 262 6 0 index html sec iscallable当且仅当其参数具有 Call 内部方法时返回 true 它在
  • 为什么 iife 在一个简单的例子中不起作用?

    我不明白为什么函数表达式调用不起作用并抛出错误 你能给我解释一下吗 var a function x alert x function a 1 谢谢大家 任务比我想象的要容易得多 这是因为 JS 将 IIFE 解析为函数的参数调用 这样做时
  • Three.js:缩放几何图形后错误的 BoundingBox

    在我的场景中 我有一个简单的立方体 var test new THREE Mesh new THREE CubeGeometry 10 10 10 new THREE MeshBasicMaterial scene add test 该立方
  • 如何在react-bootstrap中禁用表单提交的

    在下面的代码片段中 我有许多文本类型的输入表单 如果用户点击 我似乎会得到相同的合成事件 就像他们按下提交按钮一样 我想忽略作为表单提交 只允许一个人按下 提交 按钮 我删除了一些表单组以减少示例 在所有情况下 按钮或 ENTER 键 e
  • 可以在初始 DOM 解析期间/之前修改 DOM 吗?

    是否可以在初始 DOM 解析期间或之前修改 DOM 或者我是否必须等到 DOM 被解析和构建之后才能与其交互 更具体地说 是否有可能阻止 DOM 中的脚本元素使用用户脚本 内容脚本或 Chrome 或 Firefox 中的类似脚本运行 在解
  • 使用 dc.js 按条形值对条形图中的条形进行排序(排序)

    如何通过维度的计算值而不是维度本身的名称对 dc js 示例中的 x 轴 维度 进行排序 例如 请考虑序数条形图的 dc js 示例 https github com dc js dc js blob master web examples
  • 隐藏 Div 的父级

    我只是想隐藏父divcomments section div class content content green div div div 我试过这个 document getElementById comments section pa
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst
  • 调整图像大小并将画布旋转 90 度

    这里有很多关于在 js 上使用画布旋转图像的主题 我阅读了其中的大部分内容 但无法找到解决我的问题的方法 我正在接收任何分辨率的图像 来自上传组件 我将其大小调整为 1024x768 如下所示 var canvas document cre
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • Vue 和 Vuex:处理依赖的计算属性

    我的应用程序是一个使用 Vuex 在 Vue 中构建的精简电子表格 关键组件是TableCollection Table and Row The TableCollection有一个包含多个的数组Table对象 每个Table有一个包含多个
  • 代码镜像错误:未捕获错误:扩展集中无法识别扩展值([对象对象])

    全部 我目前正在从事一个React Electron项目 该项目的目标是完成一个Markdown编辑器 当我配置codemirror 该程序报告错误说 Uncaught Error Unrecognized extension value
  • 如何使用 crypto-js 解密 AES ECB

    我正在尝试将加密数据从 flash 客户端 发送到服务器端的 javascript 在 asp 中作为 jscript 运行 有几个 javascript Aes 库 但它们实际上没有文档记录 我正在尝试使用 crypto js 但无法让代
  • 在 JavaScript 循环之外声明变量可以提高速度和内存?

    C 也有类似的问题 但我们没有看到 JavaScript 的任何问题 在循环内声明变量是否可以接受 假设循环有 200 次迭代 使用样本 2 相对于样本 1 是否有性能要求 内存和速度 我们使用 jQuery 来循环 它提高了我们将 var
  • Javascript - 水波纹效果

    我需要 JS 上的脚本 它将以 水波纹 样式更改 images html 抱歉 6MB GIF 文件 http fcuunited ru temp listening2 gif http fcunited ru temp listening
  • 在 CKEditor 中设置字体大小和字体系列

    我正在使用 ckeditor 我想问一下这个插件如何设置font family和font size 我尝试过使用 CKEDITOR config font defaultLabel Arial CKEDITOR config fontSiz
  • JavaScript 相对路径

    在第一个 html 文件中 我使用了一个变量类别链接 var categoryLinks Career prospects http localhost Landa DirectManagers 511 HelenaChechik Dim0
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la

随机推荐

  • Stripe 动态付款

    我正在与 Stripe 作斗争 我正在使用 PHP 并且正在尝试建立一个简单的商店 没有 CMS 想知道如何将金额传递到 charge php 以便我可以对不同的产品收取不同的金额 这里是我的代码 charge Stripe Charge
  • 为什么JDK NIO使用这么多anon_inode文件描述符?

    我正在使用 Sun 的 JDK 1 6 0 26 和 NIO 带有 Netty 在 lsof 中我看到数百个文件描述符anon inode lsof np 11225 fgrep w anon inode java 11225 nobody
  • 等待多部分图像发送完成

    我正在 iOS7 中实现一个应用程序 它是一种社交网络应用程序 其中包含带有图像的帖子和保存从客户端发送的所有数据的后端 iOS客户端通过json发送帖子信息 发送信息后 它开始使用多部分形式发送图像AFNetworking 发送图像时需要
  • Java 中的 Lambda 表达式?

    我需要将部分项目从 C 切换到 Java 但在此之前 我想仔细 全面地比较两种语言 关于lambda表达式 我可以通过C 编写非常优雅的代码 问题是如何在Java中优雅地实现相同的功能 提前致谢 class Program enum Gen
  • Java Swing JFrame 背景未显示

    我不知道为什么我的 Jframe 上没有显示背景颜色 下面是我尝试过的代码 当我打电话时 AnimatedDialogBox animatedDialogBox new AnimatedDialogBox Saving TransSet f
  • 使用 php 和 dompdf 在 pdf 中导出变音符号

    我在导出 PDF 文档中的重音字符 例如 时遇到问题 这些字符通常存储在数据库中 但是当我尝试导出到 PDF 时 字符 变换为 C5 9F等等 我认为问题出在 dompdf 库上 现在我做preg replace但这不是一个好的解决方案 有
  • Spring Data + Redis 带自动递增键

    我正在尝试使用 Redis 进行 Spring 数据 CRUD 操作 但主要需要将自动增量密钥存储在 Redis 中 我尝试过使用Redis对SpringData进行简单的CRUD操作 但没有自动递增键功能 我怎样才能实现这个目标 如果您使
  • 查询中跨越多行的 SQL 字符串值

    UPDATE 简介可能包含撇号 请参阅更新的示例 我有一个 SQL 查询 它的值跨越多行 导致查询失败 UPDATE User SET UserId 12345 Name J Doe Location USA Bio I m a bio t
  • Typescript 对象声明,其中每个 prop 都有自己的泛型

    我正在尝试创建更动态的对象类型 现在我有以下内容 interface MyGeneric
  • ava.lang.NoClassDefFoundError:使用引导类加载器找不到类;没有可用的堆栈

    我在用docx4j从 SD 卡读取 Docx 文件 我有问题org apache log4j Logger图书馆 我什至尝试过从外部添加它 但它仍然给我同样的问题 构建 gradle apply plugin com android app
  • Python 中 switch 语句的替代品?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我想用 Python 编写一个函数 根据输入索引的值返回不同的固定值 在其他语言中我会使
  • 使用 jQuery 通过 GET 方法调用 ASP.NET Web 服务函数

    我尝试使用 jQuery 通过 GET 方法调用 Web 服务函数 但遇到问题 这是一个网络服务代码 WebService Namespace http something com samples ScriptService WebServ
  • Firebase BigQuery 架构迁移:移至分区表?

    我收到了一封电子邮件 其中包含将 BigQuery 中之前的 Firebase 表迁移到新架构的说明 他们指出了这些说明 https support google com analytics answer 7029846 migration
  • 如何在tridion页面中包含动态组件演示?

    如何在页面中包含 引用动态组件模板 我创建了一个动态 CT 并发布了它 但想在页面中呈现其演示文稿 请建议 提前致谢 有很多方法可以在页面上添加动态呈现 直接方法 为此 您的组件演示应允许在页面上进行 查看允许在页面上使用动态装配 与所有其
  • 在 Visual Studio 2010 中从 Win32 调用方调试 .Net4 COM 注册程序集

    这是一个非常简单的设置 我简直不敢相信 但到目前为止我没有发现任何人遇到同样的问题 在VS2010中创建 Net4类库 创建一个最简单的 COM 对象 ComVisible true Guid CD157EBC C89D 40b6 B531
  • 避免“如果清理失败”重复的模式[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一些代码看起来像这样 int myfunc blah a blah2 b blah3 c blah4 d blah5 e int
  • 如何在 Aurelia 中渲染不同的视图结构?

    我的 app html 中有一个通用的 html 结构 以便应用于所有页面
  • Java Swing Group 的复选框多选处理程序

    我有一组复选框 多项选择 我想知道使用 ListSelectionListener 选择了哪些项目 Box box new Box BoxLayout Y AXIS foodBox new JCheckBox proteinBox new
  • C# 中的内存不足异常

    我是 C 新手 因此 我不太确定我的程序有什么问题 该程序适用于小图像 但当它适用于 A4 大小的大图像时 会显示 内存不足异常 但是 如果不能处理大图像 该程序将毫无用处 我该如何解决这个问题 带着感谢 using System usin
  • 部署 Google Chrome 扩展; Adobe Flash Player 已停止潜在的不安全操作

    我想知道如何最好地处理 Google Chrome 扩展内部没有足够权限的问题 我正在与 YouTube API 交互 但我没有使用 swfobject js 只是使用 am embdeeded div 我不认为这会引起我的安全问题 但也许