小编tia*_*lva的帖子

检测Firefox加载项中的选项卡URL更改

我有一个可在Chrome上运行的扩展程序,用于监控活动标签页以查看网址更改.

具体来说,我需要检测URL何时更改,但没有新页面加载或导航.有些网站会这样做(例如,当您点击在YouTube上观看另一个视频时).

在Chrome上,我完成了以下操作:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if (changeInfo && changeInfo.status == "complete") {
        //do stuff here
    }
});
Run Code Online (Sandbox Code Playgroud)

如何在Firefox插件中检测到此类更改?

我被告知要使用:在所有标签上听取事件,但我无法将它们放在一起.其中一个问题是gBrowser扩展中没有定义.

我究竟做错了什么?

有更简单的方法吗?

firefox firefox-addon firefox-addon-sdk

8
推荐指数
1
解决办法
1732
查看次数

当客户端过早断开连接时,如何对烧瓶上的管道错误进行异常处理?

我正在使用flask进行开发,而不是生产,我有一个ajax请求的视图,如下所示:

@application.route('/xyz/<var>/', methods=['GET'])
def getAjax(var):
    ...
    return render_template(...)
Run Code Online (Sandbox Code Playgroud)

我也threaded=true用于开发.每当我调用那个ajax请求然后只是关闭请求它的选项卡时,我会收到一个错误:

Traceback (most recent call last):   File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 593, in process_request_thread
self.finish_request(request, client_address)   File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)   File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 651, in __init__ 2015-07-07 09:46:09,430 127.0.0.1 - - [07/Jul/2015 09:46:09] "GET /xyz/List/ HTTP/1.1" 200 -
self.finish()   File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 710, in finish
self.wfile.close()   File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 279, in close
self.flush()   File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size]) error: [Errno 32] Broken pipe
Run Code Online (Sandbox Code Playgroud)

我可以有一个try: …

python ajax flask

8
推荐指数
1
解决办法
4107
查看次数

如何使用 jenkins pipline 步骤在 docker 镜像中安装 pip ?

我有这个Dockerfile

FROM python:3.7

CMD ["/bin/bash"]
Run Code Online (Sandbox Code Playgroud)

和这个Jenkinsfile

pipeline {
agent {
    dockerfile {
        filename 'Dockerfile'
    }
}
stages {
    stage('Install') {
        steps {
            sh 'pip install --upgrade pip'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

The directory '/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/.cache/pip' or its …
Run Code Online (Sandbox Code Playgroud)

jenkins docker jenkins-pipeline

8
推荐指数
1
解决办法
3887
查看次数

如何在python-tesseract中设置tessedit_write_images?

我试图设置tessedit_write_images但似乎无法做到,我无法在任何地方看到tessinput.tif

我正在做:

import tesseract

api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_TESSERACT_ONLY)
api.SetPageSegMode(tesseract.PSM_AUTO_OSD)
api.SetVariable("tessedit_write_images", "T")
Run Code Online (Sandbox Code Playgroud)

但我尝试过"真实","1",以及更多变化,似乎根本不起作用.

有帮助吗?

tesseract python-tesseract

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

如何使用python tesseract设置init only参数?

我正在尝试使用python-tesseract包装器设置一些Tesseract参数,但对于Init Only参数,我无法这样做.

我一直在阅读Tesseract文档,似乎我必须使用Init()来设置它们.这些是setVariable文档所说的:

仅适用于非init变量*(init变量应传递给Init()).

所以Init()函数有这个签名:

const char *    datapath,
const char *    language,
OcrEngineMode   oem,
char **     configs,
int     configs_size,
const GenericVector< STRING > *     vars_vec,
const GenericVector< STRING > *     vars_values,
bool    set_only_non_debug_params
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

import tesseract

configVec =     ['user_words_suffix',   'load_system_dawg',     'load_freq_dawg']
configValues =  ['brands',              '0',                    '0']

api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_TESSERACT_ONLY, None, 0, configVec, configValues, False)
api.SetPageSegMode(tesseract.PSM_AUTO_OSD)
api.SetVariable("tessedit_char_whitelist", "€$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,.\"-/+%")
Run Code Online (Sandbox Code Playgroud)

问题是我收到以下错误:

NotImplementedError: Wrong number or type of arguments for overloaded function 'TessBaseAPI_Init'.
  Possible C/C++ prototypes are:
    tesseract::TessBaseAPI::Init(char const *,char …
Run Code Online (Sandbox Code Playgroud)

python tesseract python-tesseract

6
推荐指数
1
解决办法
874
查看次数

如何在事件页面扩展中替换短(不到一分钟)setTimeouts

有关从后台持久扩展转换为非持久性事件页面的文档说明:

如果您的扩展使用window.setTimeout()或window.setInterval(),请切换到使用警报API.如果事件页面关闭,则不会遵守基于DOM的计时器.

很公平,但警报API 文档说明:

何时可以在"现在"之后设置为不到1分钟而没有警告但实际上不会导致警报至少1分钟.

所以,我在EventPage中有一个简短的setTimeout,需要5s,如果我不能在那些短时间内使用闹钟,我怎样才能确保它完成.设置1分钟长的闹钟对我来说不是解决方案.

javascript google-chrome google-chrome-extension

6
推荐指数
1
解决办法
259
查看次数

如果选项卡在某个域中打开,如何使插件/扩展添加图标/按钮到Firefox地址栏?

如果选项卡位于某个域中,我需要让Firefox插件向地址栏添加一个按钮.

我已经设法找到当前窗口的元素navbar-icons并添加一个子项,但是将该图标添加到该窗口的所有选项卡,而不仅仅是相关的选项卡.我怎样才能做到这一点?

编辑:对不起,我在手机上,并没有包含代码.

到目前为止我有什么:

var windowsUtils = require('sdk/window/utils');

var loadButton = function(doc, urlBtnClick) {
    var urlBarIcons = doc.getElementById('urlbar-icons');

    var btn = doc.createElement('toolbarbutton');
    btn.setAttribute('id', 'button-icon');
    btn.setAttribute('image', self.data.url('./images/icon16.png'));
    btn.click(onButtonClick);
    urlBarIcons.appendChild(btn);
    return btn;
}

var onButtonClick = function(event) {
    console.log('i was clicked');
}
Run Code Online (Sandbox Code Playgroud)

每当我打电话给上面的时候,我都会在每个标签上添加一个图标/按钮,而不是当前活动标签.

firefox firefox-addon firefox-addon-sdk

5
推荐指数
1
解决办法
359
查看次数

使用 Flask 和 WTForms 我怎样才能有一个表,其中一些列是输入?

我正在努力了解这是如何完成的,并且文档似乎没有多大帮助。

我需要生成一个表,行大小是可变的,但不是动态的(我知道在生成页面之前需要多少行)。

为了简单起见,让我们想象一个页面,您用一个整数对 n 个考试进行评分。

我试过这个:

表格。

class InputInteger(Form):
    grade = IntegerField('Grade')
Run Code Online (Sandbox Code Playgroud)

风景

@decorator..
def grade():
    form = InputInteger()
    names = student_list

    return render_template("grade.html", form=form, names=names)
Run Code Online (Sandbox Code Playgroud)

模板

<table>
    <tr>
        <th>Name</th>
        <th>Grade</th>
    </tr>
    {% for name in names %}
    <tr>
        <td>
            {{name}}
        </td>
        <td>
            {{form.grade}}
        </td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

但是我如何读回输入的值呢?我如何区分谁也属于谁的年级?

我很困惑,我读过有关 FieldList(FormField(IntegerField)) 的内容,但这不只是一个带有整数列表的字段吗?表格小部件怎么样,我需要它吗?

请帮忙。

python flask wtforms

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

如何将python csv.DictReader与二进制文件一起使用?(用于babel自定义提取方法)

我正在尝试为babel编写自定义提取方法,以从csv文件中的特定列提取字符串。我在这里关注了文档。

这是我的提取方法代码:

def extract_csv(fileobj, keywords, comment_tags, options):
    import csv
    reader = csv.DictReader(fileobj, delimiter=',')
    for row in reader:
        if row and row['caption'] != '':
            yield (reader.line_num, '', row['caption'], '')
Run Code Online (Sandbox Code Playgroud)

当我尝试运行提取时,出现此错误:

在extract_csv中第18行的“ /Users/tiagosilva/repos/naltio/csv_extractor.py”文件中,用于读取器中的行:文件“ /usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6” /lib/python3.6/csv.py”,下一个 self.fieldnames文件中的第111行,“ / usr / local / Cellar / python / 3.6.5 / Frameworks / Python.framework / Versions / 3.6 / lib / python3.6 /csv.py”,第98行,字段名称为self._fieldnames = next(self.reader)_csv.Error:迭代器应返回字符串,而不是字节(您是否以文本模式打开文件?)

似乎传递给函数的fileobj是在二进制模式下打开的。

如何使这项工作?我可以想到2种可能的解决方案,但我不知道如何编写它们:

1)是否可以在DictReader中使用它?

2)有没有一种方法可以通知babel以文本模式打开文件?

我愿意接受其他未列出的解决方案。

python csv babel python-3.x

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