Firefox Addon SDK - 如何使新标签页面只运行一次(Firefox Addon SDK - how to make page in new tabs run only once)
我是Firefox Addon SDK,高级API的新手。
我想要做的是,如果用户单击工具栏上的图标,则会打开一个新选项卡,并运行contentscriptfile中定义的脚本。
我使用下面的脚本:
var self = require("sdk/self"); var tabs = require("sdk/tabs"); var buttons = require('sdk/ui/button/action'); var button = buttons.ActionButton({ id: "mm-link", label: "Visit mm", icon: { "32": "./icon-32.png", "64": "./icon-64.png" }, onClick: handleClick }); function handleClick(state) { tabs.open("about:blank"); tabs.on('ready', function (tab) { tab.attach({ contentScriptFile: self.data.url("home.js"), contentScriptOptions: {"aaa" : "1111", "bob" : "222"} }); }); }
但它没有按预期工作,并且存在以下问题:
- 该脚本反复运行。 (我希望它在每个新标签上只运行一次)
- 即使单击“+”图标创建新选项卡,脚本也会运行。 (我希望它只在单击我在工具栏上创建的图标时运行)
我还尝试将'ready'更改为'activiate',重复运行问题已经消失,但每次创建选项卡时,脚本都会运行。
非常感谢任何帮助。
I am new to Firefox Addon SDK, high level API.
What I wanted to do it, if a user click the icon on the toolbar, a new tab is opened, and run the script defined in contentscriptfile.
I use the script below:
var self = require("sdk/self"); var tabs = require("sdk/tabs"); var buttons = require('sdk/ui/button/action'); var button = buttons.ActionButton({ id: "mm-link", label: "Visit mm", icon: { "32": "./icon-32.png", "64": "./icon-64.png" }, onClick: handleClick }); function handleClick(state) { tabs.open("about:blank"); tabs.on('ready', function (tab) { tab.attach({ contentScriptFile: self.data.url("home.js"), contentScriptOptions: {"aaa" : "1111", "bob" : "222"} }); }); }
But it doesn't work as expected, and has the following problems:
- The script runs repeatedly. (I wanted it run only once on each new tab)
- Even if I click the "+" icon to create a new tab, the script will run. (I wanted it only run when clicking the icon I created on the toolbar)
I have also tried to change 'ready' to 'activiate', the repeated running problem is gone, but every time I create the tab, the script will run.
Many thanks to any help.
原文:https://stackoverflow.com/questions/36857297
最满意答案
看起来你忘了逃避路径中的反斜杠。
用于跟踪此类问题的通用工具是Windows Sysinternals Process Monitor ProcMon 。 为您的应用程序设置一个过滤器(或路径名的一部分,例如Path contains
file.txt
),看看会出现什么。 如果字符转义错误,您将看到错位的路径名。This is failing if ip in \ip\c$\imp\testfile.txt is the same ip of the webserver that the app is running on, otherwise it works just fine.
相关问答
更多-
Windows用户是否正在尝试访问文件共享,因为SQL Server访问了文件表数据库吗? Windows共享权限不适用于文件流共享,因此请确保您在SQL数据库中具有权限。 因此,通过使用以下设置为指定的Windows用户添加SQL Server登录来解决问题: Does the windows user you are trying to access the fileshare as have SQL server access to the filetable database? Windows sh ...
-
使用的内置帐户是特定于计算机的。 如果应用程序池内的应用程序需要连接到网络上的其他资源(数据库服务器,文件共享等),则使用(Windows)域帐户可能是更好的选择。 当您指定一个域帐户时,您必须确保它们在IIS正在使用的物理文件夹上设置了正确的文件权限。 在以后的操作系统中 - 您可以将此帐户添加到IIS_IUSRS组以实现默认权限。 The built in account used is specific to the computer. If applications inside the app p ...
-
这可以通过将空指针(IntPtr.Zero)传递给WindowsIdentity类的静态Impersonate方法来实现。 以下是在MSDN文档中对Impersonate方法的描述 : 使用userToken值为Zero调用Impersonate(IntPtr)方法相当于调用Win32 RevertToSelf函数。 如果当前正在模拟其他用户,则控制将恢复为原始用户。 用法看起来如下所示: using (var impersonationContext = WindowsIdentity.Impersona ...
-
看起来你忘了逃避路径中的反斜杠。 用于跟踪此类问题的通用工具是Windows Sysinternals Process Monitor ProcMon 。 为您的应用程序设置一个过滤器(或路径名的一部分,例如Path contains file.txt ),看看会出现什么。 如果字符转义错误,您将看到错位的路径名。 This is failing if ip in \ip\c$\imp\testfile.txt is the same ip of the webserver that the app is ...
-
搜索了一下之后,下面的问题和答案让我走上正轨: 如何在Web安装项目中创建新的应用程序池? 看到上面的内容之后,我仔细研究了我正在为继承自Installer的类开发的解决方案的代码库,并找到了几个。 问题似乎是在重写的Install方法中,他们正在更改属于安装程序包的站点的所有虚拟目录的应用程序池。 简而言之,我认为设置配置问题实际上是一个烦人的自定义操作问题。 After searching a little bit more, the following question and answer set ...
-
我设法找到了一个有效的解决方案。 它是这样实现的: 客户端代理凭据需要设置为IIS应用程序池的凭据,因为这些凭据不会自动获取: client.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials; 此外,我连接的远程服务有一个服务主体,需要包含在端点配置中。 所以我将VS工具生成的配置修改为以下内容:我一会儿想出答案就忘记了我的帖子。 在此特定实例中,问题在于服务器上的Internet Explorer Enhanced Security Configuration设置。 要在Windows Server 2008 R2查看您的设置,请转到Server Manager并在主页上显示您的视图。 在那里,转到“ Security Settings部分。 在这里,您将看到一个名为IE Enhanced Security Configuration (ESC) ,旁边是管理员和用户的当前设置。 就我而言,管理员 ...
是否可以限制Web服务访问它自己的Web应用程序?(Is it possible to restrict web service access to it's own web app?)[2023-04-08]
是否可以阻止从域外部到Web服务(服务器)的连接? 当然。 设置Web服务器的访问控制列表以删除IP范围之外的连接。 或者,安装防火墙。 这非常直截了当,但我怀疑你的意思是“在其域外?” 根据您的描述,您似乎真的在问您是否验证您只是在与您自己的客户端应用程序进行通信。 作为一般规则,没有。 您可以对用户进行身份验证 这很容易。 如果用户未登录并有权使用您的服务,则不会将请求转发给Twitter。 但您无法验证应用程序。 如果您要接受任何出现的用户,您无法阻止他们使用他们想要的任何客户端。 如果您允许它在他们 ...您的初始帖子在机器名称中的“localhost”之后有一个空格。 如果你删除这个,会发生什么? 此外,您需要确保运行此代码的ASP.NET用户进程具有重新启动其他应用程序池的相应权限。 您可以使用模拟来执行此操作(错误),也可以按照异常中的指示来允许用户处理对其他应用程序的适当权限。 池。 I got it working by setting the AppPool as working as "Local System". But this may cause some security issue. ...在模拟UNC路径的标识时,您需要确保明确设置用户名和密码,如下所示:You'll want to make sure that you are explicitly setting the user name and password when impersonating an identity for UNC paths, like so: 相关文章
更多- 34款Firefox渗透测试插件
- 【转】34款Firefox渗透测试插件
- 【转载】34款Firefox渗透测试插件
- 18个扩展让你的Firefox成为渗透测试工具
- 【Hadoop】Build and Run HDFS
- iOS 关于微信检测SDK应用的原理浅析
- 关于微信检测SDK应用的原理浅析(iOS)
- 微信Android SDK示例代码及运行方法
- 微信公众平台SDK
- 关于微信检测SDK应用的原理浅析(iOS)
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)