Chrome更新到版本57.0.2987.133(64位)后,Chrome扩展程序无法正常工作

时间:2017-03-31 06:51:55

标签: google-chrome-extension

最近将Chrome浏览器更新到版本57.0.2987.133(64位) 我的扩展程序停止了工作。以下是扩展工作的解释:

  • Popup.js

document.addEventListener('DOMContentLoaded', function() {
    chrome.tabs.getSelected(null, function(tab) {
      d = document;
      var f = d.createElement('form');
      f.action = 'https://example.com/login';
      f.method = 'post';
      var i = d.createElement('input');
      i.type = 'hidden';
      i.name = 'url';
      i.value = tab.url;
      console.log(tab.url);
      f.appendChild(i);
      d.body.appendChild(f);
      f.submit();
    });
});

  • popup.html

<!doctype html>
<html>
  <head>
    
    <script type="text/javascript" src="jquery-2.1.1.js"></script>
    <script src="popup.js"></script>
    <style type="text/css">
    .image {
        display: block;
        margin-left: auto;
        margin-right: auto 
    }
    </style>
  </head>
  <body style="width: 350px;height:340px;">
    
    <h3>Connecting to server please wait ...</h3>
    <br/>
    <br/>
    <br/>
    <img src="/loader.gif" alt="Please Wait" class="image" align="middle">
  </body>
</html>

  • 的manifest.json

{
"update_url": "https://clients2.google.com/service/update2/crx",

  "manifest_version": 2,
  "name": "test name",
  "description": "test description",
  "version": "0.1.2",

  "browser_action": {
   "default_icon": "128.png",
   "default_popup": "popup.html"
  },
  "icons": { 
      "16": "128.png",
      "32": "128.png",
      "64": "128.png",
      "128": "128.png" 
  },
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  
  "web_accessible_resources": [ "128.png" ],

  "permissions": [
    "tabs"
   ]
}

在Chrome更新之前,扩展工作正常 - 我提交了一个带有post方法的表格。
- 我正在发送一个密钥'url',如果请求是来自扩展名,我在服务器网站上检查,从而加载登录表单以进行扩展。
- 一旦扩展登录加载到弹出窗口,用户登录并重定向弹出窗口中的适当页面。
这是扩展的流程。但是在更新之后,加载会继续弹出。表单提交请求正在被浏览器取消。在谷歌上搜索问题,我发现使用ajax post方法提交表单而不是直接表单提交。此方法能够从中获取登录表单,但没有网页的任何css和js,因为网址中的网址是相对的,并且chrome扩展程序ID被预先添加为包含所有链接的基本网址。所以,我将这些网址更改为绝对网址,但提交功能再次无效,因为它再次成为表单。我再次将表单提交更改为服务器端的ajax post提交请求。但是通过网页编写的javascript在chrome扩展程序中无效。 那么问题是如何使扩展工作更早发挥作用?

2 个答案:

答案 0 :(得分:0)

自Chrome 33以来,

chrome.tabs.getSelected()已弃用。请尝试使用chrome.tabs.query({ active: true }),如下所示:

document.addEventListener('DOMContentLoaded', function() {
    chrome.tabs.query({ active: true }, function(tabs) {
      var tab = tabs[ 0 ];
      d = document;
      var f = d.createElement('form');
      f.action = 'https://example.com/login';
      f.method = 'post';
      var i = d.createElement('input');
      i.type = 'hidden';
      i.name = 'url';
      i.value = tab.url;
      console.log(tab.url);
      f.appendChild(i);
      d.body.appendChild(f);
      f.submit();
    });
});

答案 1 :(得分:0)

我遇到了DOMContentLoaded事件在完全呈现DOM之前出现的问题。自从我的Chrome更新为57.0.2987.133后,这就是一个问题。

也许您可以使用窗口加载事件。

$msu = "\\192.168.254.3\D$\office\00 - FTA - General\12 - IT\Scripts\Win7 WMF5  KB3134760-x64.msu"

& wusa $msu /quiet /norestart