无法在除我之外的其他浏览器/机器上运行我的 chrome 扩展:未打包的发行版中有些不匹配?

     2023-03-07     145

关键词:

【中文标题】无法在除我之外的其他浏览器/机器上运行我的 chrome 扩展:未打包的发行版中有些不匹配?【英文标题】:Cannot run my chrome extension in other broswer/machine except mine : some mismatch in unpacked distribution? 【发布时间】:2019-12-16 21:16:27 【问题描述】:

对不起,我的英语不好,我希望你能理解这个问题。

我是 chrome 扩展开发的新手,在我的代码中肯定有很多 改变或优化的东西; 无论如何,我已经编写了一个简单的代码,(似乎)至少可以从我的 chrome 中工作。

代码在特定页面中每 X 分钟点击一次按钮,然后等待并解析页面中的结果。

我已经:

一个内容脚本(从 manifest.json 加载),它在页面中“注入”一些按钮和文本输入框,因此用户可以在单击“开始按钮”之前设置一些“过滤参数”;开始按钮然后 sendMessage() 到 background.js 为点击设置警报事件;

一个事件页面(实际上设置为持久真),它处理来自标签的请求并为每个标签设置倒计时警报;当 X min 被传递时,会向感兴趣的选项卡发送一条消息;

我还有一个 popup.html e popup.js 在这里并不重要(我认为)。

我必须手动分发这个扩展,所以我会分发一个用户可以使用“开发者模式”加载的 zip。

*现在的问题是:为什么代码只能在我的 Chrome 上运行? *

我用 Chrome 和其他 2-3 台笔记本电脑测试过,后台脚本已加载(我可以看到后台页面 printint 控制台日志)

但在网页中,contents.js 似乎无法执行。

在我的 chrome 中运行良好:我可以在控制台中看到一些初始输出(我打印要检查的 dir 扩展名)和 页面中动态创建的元素(按钮、输入框等)。

一切正常,我可以触发开始按钮并接收解析结果。

在开发过程中,我从未在其他机器上运行过扩展。昨天我已经成功地在 2-3 台笔记本电脑上进行了测试。然后我只做了很少的改变,但没有什么严重的。

今天我只能在我的 chrome 中运行。

在其他电脑上什么都没有,简单的console.log也不输出第一行脚本。

我可以在控制台日志中阅读: “未经检查的 runtime.lastError:无法建立连接。接收端不存在。” 但这也是我在笔记本电脑 chrome 上工作时的情况。

zip文件一样,解压好,其实我可以加载扩展,看到后台页面调试console.log()语句

在某些情况下,在它不起作用的笔记本电脑中,我收到了一条与 jQuery 相关的消息,并且没有定义 chrome.runtime.sendMessage() 的事实;它指向网页中的代码,而不是我的。

我在网页代码中看到了类似的内容:

 var extid = "mcmhdskbnejjjdjsdkksmeadjaibo";
          var extVer = "1.5";
          var extStatus = 0;
   $(document).ready(function ()  
///...
  chrome.runtime.sendMessage(extid, message: "version",
                  function (reply) 
                      if (reply) 
                          if (reply.version) 
                              if (reply.version == extVer) 
                                  if (reply.gminfo != 'OK') 
                                      extStatus = 1; /// ...

好像chrome.runtime是未定义的,网页无法调用sendMessage()。 编辑:这个未定义仅在我的扩展加载时发生

也许当我加载我的扩展时有一些冲突?但在我的 chrome 浏览器中工作...

专家能否指出我要调查的方向?

非常感谢您的任何建议。

我的 Manifest.json :

  "manifest_version": 2,
  "name": "myAlarm",
  "description": "This extension alerts.",
  "version": "0.1",
   "permissions": [
   "alarms",
   "system.cpu",
   "storage",
   "tabs",
    "webNavigation",
   "https://www.mytargetsite.com/subUrl/"
     ],

   "web_accessible_resources": [
   "icon.png",
   "vanillaSelectBox.css"],

    "content_scripts": [
    
    "matches": ["https://www.mytargetsite.com/subUrl/"],
     "css": ["vanillaSelectBox.css"],
     "js": ["jquery-3.3.1.min.js","vanillaSelectBox.js","taffy-min.js","content.js"],
     "run_at": "document_end"
     
      ],

    "background": 
    "scripts": ["eventPage.js"],
    "persistent": true
     ,

     "browser_action": 
    "default_icon": "icon.png",
    "default_popup": "popup.html"
      ,

   "icons": 
     ....
      
      

我的内容,js(剥离):

     chrome.runtime.onMessage.addListener(
            function(request, sender) 
          // here i parse message "time'up" from background js    
              );

    window.addEventListener('load', function() 
     var pt=chrome.runtime.getURL('filterOff.wav'); 
      var p=pt.split("/");

      console.log("[myAlarm v0.1] started" );
      console.log("[myAlarm v0.1] folder : ("+p[2]+")");
       // here i start an active wait for the presence in page of button with ID= btntarget_id
      waitForElementToDisplay("#btntarget_id", 500); //when function find button then create and add button and input text to webpage
         );

我的 eventPage.js :

            var curr_alarms =[];
             chrome.extension.onMessage.addListener(function(request, sender)
                 /// here receive start countdown message from content.js and set alarm  ...
               


            chrome.alarms.onAlarm.addListener(function(alarm) 
              /// here i manage each alarm for each tab
              );

              chrome.tabs.onRemoved.addListener(function(tabid, removed)  
                //  ...
             );

            chrome.tabs.onUpdated.addListener(function
             (tabId, changeInfo, tab) 
               //
               );

编辑:在它不起作用的浏览器中我也可以阅读:

从源“https://mytargetsite.com”访问“https://mytargetsite.com/suburl/grid.php”处的 XMLHttpRequest(从“https://mytargetsite.com/suburl/grid.php”重定向)已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:重定向未通过允许预检请求。

【问题讨论】:

【参考方案1】:

    声明的内容脚本是否运行,应通过在 devtools => 源子选项卡 => 内容脚本子子选项卡中检查来验证。如果它真的没有运行,可能只有两种解释:URL 不同(例如不是https)或扩展被其域管理员通过 runtime_blocked_hosts 阻止,您可以在 chrome://policy 中看到。

    除非您在 manifest.json 中 pin it by adding a "key",否则您的开发模式扩展程序的 id 在不同的机器上会有所不同

    1234563

    CORS 错误可能与您的代码无关(您可以通过在 devtools 控制台中展开错误的调用堆栈来调查错误的来源)。

【讨论】:

1- 你是对的!我花了几个小时然后发现 302 重定向 url 在加载时出现了一些不匹配!所以这是真正的问题。 2-我抓住了这一刻:我有点困惑......添加密钥是严格需要“手动”分发我的解压扩展程序? (我的意思是,我会向用户发送一个 zip 文件;然后他们提取并加载.. 可以吗?还是我遗漏了什么?)

HTML5 视频播放器在除 Safari 之外的所有浏览器中都没有声音

】HTML5视频播放器在除Safari之外的所有浏览器中都没有声音【英文标题】:HTML5videoplayernosoundineverybrowserexceptSafari【发布时间】:2016-05-2101:06:17【问题描述】:我的代码在Safari中运行,但Opera、Chrome和Firefox没有声音,我无法更改音... 查看详情

.htaccess 阻止除我的 ip 之外的所有内容

】.htaccess阻止除我的ip之外的所有内容【英文标题】:.htaccessblockallbutmyip【发布时间】:2012-12-0518:22:05【问题描述】:我正在尝试做一个快速的htaccess来阻止除我的ip之外的所有内容。我有这个orderdeny,allowdenyfromallallowfrom"MYIP"“我... 查看详情

Meteor JS 可以在除 iOS 设备之外的所有设备上连接到 compose.io 吗?

....io作为我的数据库平台。我可以通过以下方式连接以在Web浏览器和iOS模拟器中编写:MONGO_URL="mongod 查看详情

UIRefreshControl 将在除 iPhone 6+ 之外的所有手机上关闭

】UIRefreshControl将在除iPhone6+之外的所有手机上关闭【英文标题】:UIRefreshControlwilldismissonallphonesexceptiPhone6+【发布时间】:2015-03-1917:27:50【问题描述】:我正在使用UIRefreshControl的实例重新加载UITableView中的数据。如果我在除iPhone6+... 查看详情

如何在除 main.cpp 之外的其他文件中包含 OTL 标头?

】如何在除main.cpp之外的其他文件中包含OTL标头?【英文标题】:HowtoincludetheOTLheaderinotherfilesbesidesmain.cpp?【发布时间】:2016-09-0303:39:57【问题描述】:我在我的项目中使用OTL。以下代码按预期工作:#include<iostream>usingnamespaces... 查看详情

在日历中的特定日期显示背景颜色的问题,在除移动 Safari 之外的所有浏览器上都可以正常工作

...特定日期显示背景颜色的问题,在除移动Safari之外的所有浏览器上都可以正常工作【英文标题】:Issueinshowingbackgroundcolortospecificdaysincalendar,workingfineonallbrowsersexceptmobileSafari【发布时间】:2020-03-1707:13:22【问题描述】:我正在尝试... 查看详情

在外部 Tomcat 服务器上运行的 Springboot 在除 index.html 之外的所有内容上都会出现错误 404

】在外部Tomcat服务器上运行的Springboot在除index.html之外的所有内容上都会出现错误404【英文标题】:SpringbootrunningonexternalTomcatservergiveserror404oneverythingbutindex.html【发布时间】:2020-10-1901:51:48【问题描述】:我基本上已将问题确定... 查看详情

谷歌图表“不是功能”在除 chrome 之外的所有浏览器中

】谷歌图表“不是功能”在除chrome之外的所有浏览器中【英文标题】:googlecharts"isnotafunction"ineverybrowserexceptchrome【发布时间】:2015-05-1819:26:32【问题描述】:Firefox、safari、ios上的safari、IE……它们的行为方式都相同。不... 查看详情

ADB 不再识别设备

...AXISTandroid4.1.1设备上测试我的应用程序。此android设备显示在除我之外的所有其他 查看详情

在除特定页面 ID 之外的所有页面上设置 CSS 样式

】在除特定页面ID之外的所有页面上设置CSS样式【英文标题】:SetCSSstyleonallbutspecificpageID【发布时间】:2014-07-2820:41:04【问题描述】:我正在为一个客户开发一个网站,该客户希望在整个网站范围内使用特定的背景颜色,除了一... 查看详情

iPhone X 相机无法填满屏幕

】iPhoneX相机无法填满屏幕【英文标题】:iPhoneXcameranotfillingscreen【发布时间】:2018-06-1501:29:07【问题描述】:我在我的应用程序中实现了一个QR扫描仪,并且布局在除iPhoneX之外的所有设备上都运行良好。在iPhoneX上,导航栏和相... 查看详情

如何使用 .htaccess 在除一个目录 /images 之外的所有 URL 上强制使用 HTTPS?

】如何使用.htaccess在除一个目录/images之外的所有URL上强制使用HTTPS?【英文标题】:HowtoforceHTTPSonallURL\'sexceptonedirectory/imagesusing.htaccess?【发布时间】:2022-01-0703:17:00【问题描述】:我正在使用WordPress,我们有一个不是WordPress目录... 查看详情

在 Amazon EC2 上运行的 Tomcat 在 AWS 之外无法访问

...我已经部署了我的应用程序,我可以通过连接到实例并在浏览器中启动url以 查看详情

Discord 机器人正在标记其他我不希望它标记的词

...【问题描述】:我知道以前有人问过这个问题,但我似乎无法在任何地方找到它,所以我只是问一下。我让我的不和谐机器人发送一条消息,说不要使用单词,除非在除一个(工作)之外的任何渠道中;但是,该机器人还会标记... 查看详情

每次运行单元测试时都在擦除我的 H2 数据库是啥?

】每次运行单元测试时都在擦除我的H2数据库是啥?【英文标题】:WhatiswipingmyH2databaseeverytimeIrunaunittest?每次运行单元测试时都在擦除我的H2数据库是什么?【发布时间】:2013-04-0802:05:01【问题描述】:我有一个Spring+Hibernate+H2项... 查看详情

Zip Mime 类型似乎无法识别

...206:28:32【问题描述】:我正在尝试返回一个zip文件,作为浏览器上的流。这适用于其他类型的文件(例如Excel文件),但是当我开始处理zip文件时,我的浏览器无法识别它是zip。Firefox和IE都在我的测试机器上运行提示,询问用什... 查看详情

ssl证书无法在safari上运行(代码片段)

...站设置通过GoDaddy.com的证书使用SSL。在除Safari之外的每个浏览器上,SSL都没有问题。但是,在PC上的Safari上,我们无法访问该站点。当您尝试浏览到该站点时,您会收到“选择证书”提示或“无证书可用”提示。如果您收到“选... 查看详情

为啥 JavaScript 不能在 localhost 上运行,但在我的机器上却能完美运行?

...我正在尝试创建一个隐藏/显示div的按钮,此代码在我的浏览器 查看详情