问题标签 [npruntime]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
firefox - 将非 ASCII 字符串传递给 NPN_Invoke 时出现问题
我的插件使用 NPN_Invoke 调用 JavaScript 函数,并将字符串参数传递给它。如果其中的所有字符都是 ASCII,则一切正常。但是如果字符串中有非 ASCII 字符,那么 JavaScript 会收到一个空字符串。
我验证了传递给 NPN_Invoke 的 NPVariant 变量(或者更确切地说,一个数组项)仍然包含一个有效的字符串,因此看起来好像浏览器端发生了错误。
这真的是一个 Firefox 错误(我在 Windows 上使用 FF 3.6 和 4.0 进行了测试),还是我做错了什么?任何解决方法?
firefox - 用户设置在 NPAPI 中的持久性?
我想知道,NPAPI中是否有任何支持读/写用户设置的东西?目前我使用 XPCOM,但我想摆脱这段代码以支持除 Firefox 之外的其他浏览器。我知道我可以直接读/写文件系统(或 Windows 上的注册表),但我想探索其他选项 - 允许用户从浏览器编辑这些设置(例如,FF 中的 about:config)可以说是更好用户体验比指导他编辑一些定制的配置文件。
xcode - 如何在 Mac 的 Opera 上开发 NPRuntime 插件?
我最近为 Mac OS X 上的网络浏览器开发了插件。
由 XCode 开发,我的包位于 /Library/Internet Plug-ins。
Chrome、Safari、Firefox 捕获了这个插件,但 Opera 没有。
我的插件如何被 Opera 捕获?
plugins - chrome使用npruntime插件将整数检测为NPVariantType_Double?
我试图通过我的 NPRuntime 插件通过 javascript 调用一个函数,但是当我将一个整数值传递给一个函数时,chrome 将其检测为 NPVariantType_Double,而 Firefox 与 NPVariantType_Int32 相同。我们能否在不修改脚本的情况下避免这种情况,以确保 firefox 和 chrome 都将其检测为 NPVariantType_Int32。
firefox - npapi 插件与 firefox 4.0 及更高版本有问题
我已经为 firefox/chrome 开发了基于 npruntime 的插件,它在 ff3.6/chrome 10 上运行良好,但是当我在加载插件后在 firefox 4.0 或更高版本中加载任何其他插件时,如果我在插件之后打开 gmail,firefox 就会挂起已经加载,然后firefox停止响应,我已经验证它与插件容器有关。谁能建议我到底哪里出错了?任何指针将不胜感激。提前致谢
这是 ff6 的调用堆栈
ntdll.dll!_ZwWaitForSingleObject@12()
ntdll.dll!_ZwWaitForSingleObject@12()
kernel32.dll!_WaitForSingleObjectExImplementation@12() kernel32.dll!_WaitForSingleObject@8()
nspr4.dll!_PR_MD_WAIT_CV(_MDCVar * cv, _MDLock * lock, unsigned int timeout)
nspr4.dll!_PR_WaitCondVar(PRThread * thread, PRCondVar * cvar, PRLock * lock, unsigned int timeout)
nspr4.dll!PR_WaitCondVar(PRCondVar * cvar, unsigned int timeout)
xul.dll!mozilla::CondVar::等待(无符号整数间隔)
xul.dll!mozilla::ipc::GeckoChildProcessHost::SyncLaunch(std::vector,std::allocator >,std::allocator,std::allocator > > > aExtraOpts, int aTimeoutMs, base ::ProcessArchitecture arch) xul.dll!mozilla::plugins::PluginProcessParent::Launch(int timeoutMs)
xul.dll!mozilla::plugins::PluginModuleParent::LoadModule(const char * aFilePath)
xul.dll!GetNewPluginLibrary(nsPluginTag * aPluginTag) xul.dll!nsNPAPIPlugin::CreatePlugin(nsPluginTag * aPluginTag, nsNPAPIPlugin * * aResult)
xul. dll!CreateNPAPIPlugin(nsPluginTag * aPluginTag, nsNPAPIPlugin * * aOutNPAPIPlugin)
xul.dll!nsPluginHost::EnsurePluginLoaded(nsPluginTag * plugin)
xul.dll!nsPluginHost::GetPlugin(const char * aMimeType, nsNPAPIPlugin * * aPlugin)
xul.dll!nsPluginHost ::TrySetUpPluginInstance(const char * aMimeType, nsIURI * aURL, nsIPluginInstanceOwner * aOwner) xul.dll!nsPluginHost::SetUpPluginInstance(const char * aMimeType, nsIURI * aURL, nsIPluginInstanceOwner * aOwner)
xul.dll!nsPluginHost::InstantiateEmbeddedPlugin(const char * aMimeType, nsIURI * aURL, nsIPluginInstanceOwner * aOwner, int aAllowOpeningStreams) ...
google-chrome - 如何编写一个仅与特定 chrome 扩展交互的安全 NPAPI 插件?
我想编写一个 chrome 扩展程序,它会根据某些事件自动(无需用户交互)从本地存储读取和上传文件。我知道这不是直接可能的,因为网络和浏览器的安全模型。
在网上研究后发现这可以通过一个 NPAPI 插件来实现。据我了解,我可以编写一个 chrome 扩展,它将(通过 NPRuntime API)与 NPAPI 插件交互并请求上传文件。该插件将检索文件并以文件数据进行响应。
问题 1:架构是否以合理/有效的方式来完成我的任务?
如果是这样,那么我担心的是这种方法的安全性。
问题 2:由于我的插件将从本地存储读取(并且可能写入)内容,我将如何以安全的方式对其进行编码,以免被其他恶意站点/扩展程序滥用?我的插件应该只适用于我的扩展,而不适用于任何其他站点/扩展。我将如何实现这一目标?换句话说,我应该采取什么样的措施来保护我的 chrome 扩展程序和 NAAPI 插件之间的交互,以便没有恶意攻击的余地?
google-chrome - chrome newer version(14) 不提供作为 NPVariant 的一部分的空终止字符串
chrome newer version(14) 不提供作为 NPVariant 的一部分的空终止字符串,而 firefox 的行为不同并提供空终止字符串。这是预期的吗??
除了提取字符串,分配内存并添加空字符然后释放相同的内容之外,我们还能做什么......所有这些只是为了添加一个空字符?
java - 在 Chromium 中通过 NPAPI / NPRuntime 调用 java 小程序
我发现了这个错误:http ://code.google.com/p/chromium/issues/detail?id= 580#c69 指出 Chromium 不支持 LiveConnect。
其中一位开发人员回应说
我们不打算在 Chrome 中支持 LiveConnect。Sun 最新版本的 Java 插件不再需要这个,因为它使用 NPRuntime 来允许编写脚本。
有谁知道如何使用 NPAPI / NPRuntime 接口调用/从 java applet 和 javascript 调用?一个简单的例子或资源就足够了。
plugins - 基本插件(NPAPI / npruntime)你好世界
背景步骤
- 从这里使用 Mozilla 代码:http: //mxr.mozilla.org/seamonkey/source/modules/plugin/tools/sdk/samples/basic/windows/
- 在 Visual Studio 中新建空项目并添加上述文件
- 更改的配置类型:动态库 (.dll) 3b。链接器->输入->模块定义文件:BasicPlugin.def
- 注释 BasicPlugin.cpp,仅具有基本功能并为 Hello World 显示 MessageBox
- 编译(成功)并复制到 Firefox Plugins 目录
- 检查:插件(找到)
- 加载 HTML 调用 dll(失败)
我现在正在尝试使用 npruntime 文件并制作一个可编写脚本的插件(不确定如何)。但我不明白为什么插件没有加载。这似乎是所有基本的基本。有人对此有想法吗?
基本插件.cpp
HTML
html - npruntime 插件安装
我制作了一个包含 npruntime 插件的简单 html 页面,它在本地运行良好。当然,npruntime 对象文件(npmyapp.dll)已经注册,所以浏览器可以加载插件。
(加载插件代码类似于..)
我想知道的是,如果浏览器找不到插件,如何要求安装。
例如,当我们在安装 Flash Player 之前浏览包含 Flash Player 的网站时,浏览器会询问安装。如何?
任何帮助将不胜感激。谢谢!