小编use*_*880的帖子

Firefox webextension错误:无法建立连接.接收端不存在

我正在尝试将后台脚本中的变量发送到与HTML页面关联的内容脚本.内容脚本使用从后台脚本接收的变量更新HTML内容.

问题是我收到此错误消息:

Error: Could not establish connection. Receiving end does not exist.
Run Code Online (Sandbox Code Playgroud)

后台脚本main.js:

var target = "<all_urls>";
function logError(responseDetails) {
  errorTab = responseDetails.tabId;
  console.log("Error tab: "+errorTab);

  errorURL = responseDetails.url;
  console.log("Error URL: "+errorURL);

  //send errorURL variable to content script
  var sending = browser.tabs.sendMessage(errorTab, {url: errorURL})
    .then(response => {
      console.log("Message from the content script:");
      console.log(response.response);
    }).catch(onError);

  //direct to HTML page
  browser.tabs.update(errorTab,{url: "data/error.html"});
}//end function

browser.webRequest.onErrorOccurred.addListener(
  logError,
  {urls: [target],
  types: ["main_frame"]}
);
Run Code Online (Sandbox Code Playgroud)

error.html方法是:

<html>
<head>
  <meta charset="UTF-8">
</head>
<body> …
Run Code Online (Sandbox Code Playgroud)

javascript firefox firefox-addon firefox-addon-webextensions

14
推荐指数
2
解决办法
1万
查看次数

无法使用 MySQL 在 python 中插入单列值

我有一个单列表。我需要在此列中插入值。程序正确运行,没有错误。但是当我检查数据库时,没有插入任何内容。当我向代码和表中添加另一列时,程序正确插入数据。你能告诉我如何为单列表插入数据吗?这是不向表中插入任何内容的单列代码。

import MySQLdb
conn = MySQLdb.connect(host= "localhost",
                  user="root",
                  passwd="123",
                  db="dbname")
cursor = conn.cursor()
x=100
try:
    sql="""INSERT INTO table (col1) VALUES ('%s')"""
    cursor.execute(sql, (x))
    conn.commit()
except:
    conn.rollback()

conn.close()
Run Code Online (Sandbox Code Playgroud)

这是两列代码。

import MySQLdb
conn = MySQLdb.connect(host= "localhost",
                  user="root",
                  passwd="123",
                  db="dbname")
cursor = conn.cursor()
x=100
y=2
try:
    sql="""INSERT INTO table (col1,col2) VALUES ('%s','%s')"""
    cursor.execute(sql, (x,y))
    conn.commit()
except:
    conn.rollback()

conn.close()
Run Code Online (Sandbox Code Playgroud)

python mysql sql python-2.7

7
推荐指数
1
解决办法
4601
查看次数

在阻塞 webRequest 处理程序中使用异步调用

概括

我正在使用browser.webRequest.onBeforeRequest处理程序。我需要阻止 webRequest 直到我从处理程序中对异步方法的调用返回信息。我怎样才能做到这一点?

细节

首先,我为这么长的问题道歉。但我希望有人可以提供帮助。

我有一个嵌入式扩展,其中包含一个browser.webRequest.onBeforeRequest(我现在需要使用嵌入式扩展来处理一些 SDK 遗留代码)。

browser.webRequest.onBeforeRequest回调函数连接到一个SDK扩展,并指示它执行某些功能。从任务完成后,SDK 会向 webextension 发送回复。我使用awaitinbrowser.runtime.sendMessage来确保我停止执行,直到我得到 SDK 的回复。要使用await,我不得不使用async(但实际上我不想要async功能)。当我不使用 时await,我只会在循环完成所有迭代后从 SDK 得到回复,而不是每次迭代。

下面的示例代码包含许多用于调试的控制台消息,只是为了监视执行。

问题是:我没有得到可靠的结果。在某些情况下(不是全部),http 请求在 SDK 代码生效之前就发出了。我可以识别这一点,因为请求属性必须受 SDK 代码的影响。控制台按预期显示执行顺序。但是,http 请求不受 SDK 的影响(在某些情况下)。

在这个简单的例子中,SDK 只是向 webextension 发送消息,但假设它执行一些功能,读/写操作等。所有 SDK 任务必须在请求发出之前完成。

我真正需要的是保证在执行所有 SDK 代码之前 Web 请求不会发出。

参考 MDN 文档,它说 browser.webRequest.onBeforeRequest 是一个async函数。我想知道这是否是问题的根源?如果是这样,如何强制它同步?

embedding-extension [directory]
    - index.js
    - package.json
    - webextension [directory]
       - main.js
       - manifest.json
Run Code Online (Sandbox Code Playgroud)

1)package.json: …

javascript firefox firefox-addon firefox-addon-webextensions

3
推荐指数
1
解决办法
1323
查看次数

无法在 WebExtensions 中使用组件:收到“ReferenceError:Cu 未定义”

我有一个简单的扩展,用于Cu.import导入JavaScript 代码模块。但是,当我加载扩展时,我收到此错误:

Cu is not defined
Run Code Online (Sandbox Code Playgroud)

我试图使用的代码是:

Cu.import("resource://gre/modules/MatchPattern.jsm");
Cu.import("resource://gre/modules/BrowserUtils.jsm");

var regExArray = [];
var myArray = ["facebook.com", "google.com"];

var myURL="http://www.google.co.uk/?gfe_rd";

for (var x=0; x<myArray.length; x++)
{   
    console.log("loop: "+x);
    var match = new MatchPattern(/(http:\/\/)(.*\.)*(myArray[x])(\/.*)*(\/)*/);
    log("match result is: "+match.matches(myURL));     
}//end for loop
Run Code Online (Sandbox Code Playgroud)

我知道如何Cu在 Firefox Add-on SDK 中使用定义require,但如何在 WebExtesnions 中定义它?

javascript firefox-addon firefox-addon-webextensions

3
推荐指数
1
解决办法
1933
查看次数

TypeError:browser.webRequest未定义

我正在尝试使用webextension记录错误。我有以下简单的示例开始:

manifest.json

{

  "manifest_version": 2,
  "name": "testOnErrorWebex",
  "version": "1.0",

  "description": "Adds a red border to all webpages matching mozilla.org.",

  "icons": {
    "48": "icons/border-48.png"
  },

  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["testOnErrorWebex.js"]
    }
  ],

  "permissions": [
  "webRequest"
]

}
Run Code Online (Sandbox Code Playgroud)

并且,内容脚本: testOnErrorWebex.js

console.log("-- inside js file --");

var target = "<all_urls>"; 

/*
e.g., with no network:
"https://developer.mozilla.org/en-US/"
NS_ERROR_NET_ON_RESOLVED in Firefox
net::ERR_INTERNET_DISCONNECTED in Chrome
*/

function logError(responseDetails) {
  console.log("-- inside logError  --");
  console.log("inside logError");
  console.log(responseDetails.url);
  console.log(responseDetails.error);
}

browser.webRequest.onErrorOccurred.addListener(
  logError,
  {urls: [target]}
); …
Run Code Online (Sandbox Code Playgroud)

firefox-addon-webextensions

2
推荐指数
1
解决办法
1454
查看次数

无法使removeChild正常工作

原谅原始问题.我想使用removeChild在HTML表中动态删除行.我按照这里的教程,仍然不能与我合作.这是我正在做的一个例子.我得到的错误是:

NotFoundError: Node was not found
Run Code Online (Sandbox Code Playgroud)

代码和脚本:

var currentRow=document.getElementById("row-2");
var table = document.getElementById("data-table");
table.removeChild(currentRow);
Run Code Online (Sandbox Code Playgroud)
<html>
      <head>
        <meta charset="UTF-8">
      </head>
    
      <body id="body">
        <table align="center" cellspacing=1 cellpadding=1 id="data-table" border=1 class="data-table">
          <tr id="head" class="head">
            <td class="head">A</td>
            <td class="head">B</td>
            <td class="head">C</td>
          </tr>
    
           <tr id="row-1" class="head">
            <td class="head" id="col1-1">A1</td>
            <td class="head" id="col2-1">B1</td>
            <td class="head" id="col3-1">C1</td>
          </tr>
    	  
    	  <tr id="row-2" class="head">
            <td class="head" id="col1-2">A2</td>
            <td class="head" id="col2-2">B2</td>
            <td class="head" id="col3-2">C2</td>
          </tr>
        </table>
      </body>
    </html>
Run Code Online (Sandbox Code Playgroud)

html javascript

-1
推荐指数
1
解决办法
42
查看次数