問題タブ [xpcom]
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 - XPCOM コンポーネント (Firefox 拡張機能) でソケット (nsIServerSocket) を使用する (ソケット + 新しいウィンドウ = seg faults)
この問題に関心がある場合は、以下の更新 #2 をお読みください ;)
このコードを拡張機能の JS に入れたとします。
次に、Firefox を実行し、telnet 経由でソケットに接続します
5 つのメッセージを送信すると印刷されますが、6 番目のメッセージを送信しようとすると、
さらに悪いことに、これと同じコードを XPCOM コンポーネントに入れようとすると (そこが実際に必要なため)、telnet 経由でメッセージを送信しようとすると、
または時々
Firefox を起動した端末に出力されました。
これは本当に奇妙なことです..私が貼り付けたコードに何か問題があることを見つけることができますか、それとも私のFirefox/システムに何か問題がありますか?それともnsIServerSocketインターフェースは非推奨ですか?
Firefox 3.6.6 でテストしています。
私は本当にいくつかの答えをいただければ幸いです。XPCOM コンポーネント内でソケットを使用する良い例を教えてください。私は周りでそれらの多くを見たことがありません。
アップデート
以前は機能していたことに気付いたので、コンソールコンポーネントが壊れていると思います。これがどのように関連しているのかわかりません。しかし、このコンポーネントを使用しない場合、ソケットは正常に機能しています。
これが私のコンソールコンポーネントのコードです。何が問題なのか、なぜ干渉するのかを突き止めようとします。後で調査結果を投稿します。おそらく、ここでひどく間違ったことをして、javascript でセグメンテーション違反を引き起こしている可能性があります =)
ブードゥー..
コンポーネント/Console.js:
このコンポーネントを次のように使用しています。
そして、これはソケットを壊します:-S =)
更新 #2 OK、誰かがこのことをチェックすることに興味がある場合は、本当に感謝します + これはおそらく何らかのバグだと思います (javascript からの Seg 障害は発生しないはずです) 私は拡張機能の最小バージョンを作成しました問題が発生する場合は、次の場所からインストールできます。
http://dl.dropbox.com/u/645579/segfault.xpi
重要な部分は chrome/content/main.js です:
私の友人と私がエラーを再現できる方法は、Firefox を起動することです。その後、「Opened socket on 9999」という新しいウィンドウが表示されます。「telnet localhost 9999」を使用して接続し、いくつかのメッセージを送信します。2 ~ 6 件のメッセージの後、firefox が起動されたターミナルに次のいずれかが出力されます。
1 (最も一般的)
セグメンテーション違反
2 (何度も見た)
firefox-bin: X サーバー :0.0 で致命的な IO エラー 11 (リソースが一時的に利用できません) が発生しました。
3 (何度か見た)
GLib-ERROR **: /build/buildd/glib2.0-2.24.1/glib/gmem.c:137: 32 バイトの割り当てに失敗しました 中止しています...中止しました
4 (一度見た)
firefox-bin: ../../src/xcb_io.c:249: process_responses: アサーション `(((long) (dpy->last_request_read) - (long) (dpy->request)) <= 0)' が失敗しました. 中止しました
さらに情報が必要な場合、またはバグ レポートを投稿する場所を教えていただける場合:-/ 喜んで対応させていただきます。
これは多くのバグの 1 つにすぎないことはわかっていますが、これを回避するにはどうすればよいかご存知ですか? そんな私の「コンソール」を、そんな風に使っていきたいと思います。
人々が示唆しているように、バッファ/フラッシング/トライ/キャッチでやってみますが、トライ/キャッチがセグフォールトをキャッチするかどうかは疑問です...
firefox - JS XPCOM サービスを作成するとき、classID はランダムにできますか?
JS XPCOM サービスを作成するとき、classID に使用される GUID はランダムに生成された文字列でよいのですか? ここの指示に従いますか?
別のプロジェクトをフォークして、これを別のランダムに生成された値に変更したため、私は尋ねます.classDescriptionとcontractIDも正しく変更したと思いますが、成功していません. だから、私の理解が正しいことを確認したかっただけです。
javascript - Firefox XPCOM コンポーネントで eval.call() を使用する
すべてのページの読み込み時に、そのページ専用の xpcom コンポーネントのインスタンスを作成する拡張機能を作成しています。
私はこのようにします:
私の質問は、XPCOM コンポーネント内で、そのドキュメントのグローバル コンテキスト内で eval() をどのように使用できるかということです。htmlの通常のjavascriptでこれを行うだけの場合は、次のことができます。
問題は、xpcom コンポーネントにウィンドウ変数がない (またはある) ことです。ドキュメントへの参照しかありません。作成時にウィンドウを XPCOM コンポーネントに渡すこともできますが、複数のページを開いている場合、それがどのように機能するかわかりません..
c++ - XPCOMをFirefoxに登録します。不明なCID
XPCOMコンポーネントの例を次の例のfirefoxに登録するのに問題があります:http ://www.iosart.com/firefox/xpcom/Firefox3.6でこれ を試しています。XPTとライブラリを正常にビルドしてFirefoxのコンポーネントフォルダに転送した後、適用可能な手順に従って、コンポーネントを正常に登録できません。
xul - XPCOMinFirefox拡張機能を含む
Firefox拡張機能の開発経験は非常に限られています(XUL Schoolを読んで、非常に単純な拡張機能をいくつか作成しました)。
Firefox XPCOMオブジェクトでは利用できない機能、つまり外部プロセスの実行とそのstdoutの読み取りが必要になりました。これはProtozillaを使用して実行できるようです。そのため、私の問題は、この外部XPCOMオブジェクトをXPIに含めて、拡張機能で使用できるようにすることです。
私の問題はXPCOMオブジェクトのビルド方法ではないことを明確にする必要があります。なぜなら、私はすでにビルドを持っており、何かを変更する必要がある場合は、すでにmakefileを持っているからです。私の問題は:私は今何をしますか?私の拡張機能ツリーは次のようになります
/
->chrome/
->->コンテンツ
->->->browserOverlay.js
->-> ->...-
>->ロケール
->-> -> en-US
->->->-> browserOverlay.dtd
->->->-> browserOverlay.properties
->- >->
...- >->スキン
->- >->...-
>デフォルト/
->->設定/
->->->my_extension.js-
>モジュール/
-> -> common.js-
> chrome.manifest-
> install.rdf
XPCOMファイルはどこに含める必要がありますか?新しいXPCOMオブジェクトが利用可能であることをFirefoxに伝えるために何かをする必要がありますか?
cross-platform - Firefox から xpcom を使用してシリアルポートから読み取る方法は?
xpcom を使用して Mozilla Firefox をシリアル ポートに接続したいと考えています。最終的な結果は、さまざまな環境にインストールできる xpi アドオンになるはずです (クロスプラットフォームの Windows/Linux と Firefox 3.*)。どこから始めればよいですか?
ここで例を見つけました: http://forums.mozillazine.org/viewtopic.php?f=19&t=1083965&start=0、しかし、コードはLinuxでしか機能しないと思います... Windowsで同様のことを行うことはできますか?
c++ - Firefox プラグインのドメイン制限 - IE の SiteLock と同様
Gecko SDK/NPAPI に、プラグインの使用を制限されたドメインのみに制限できる機能があるかどうかを知りたいです。IE の SiteLock が ActiveX コンポーネントで行うのとまったく同じです。
たとえば、NPAPIで同様の実装はありますか?
javascript - UniversalXPConnect 特権を必要とするスクリプトまたは Web ページに署名する方法
私が開発した Firefox 拡張機能に実装されたいくつかの機能を使用する Web サイトがあります。Web ページの 1 つで JavaScript スクリプトを使用するには、Firefox 拡張機能に実装されている XPCOM コンポーネントと通信するために UniversalXPConnect 権限が必要です。
デフォルトでは、スクリプトが XPCOM コンポーネントにアクセスするためにこの権限を有効にしようとすると、次のようになります。
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
...次のエラーが発生します。
エラー: " http://example.com " からのスクリプトは、UniversalXPConnect 権限を拒否されました。
現在、この権限を有効にするには、「about:config」Firefox ページで「signed.applets.codebase_principal_support」設定を手動で編集する必要があります。
このページから: http://www.mozilla.org/projects/security/components/signed-scripts.htmlこの特権を必要とするスクリプトを含む Web ページに明示的に署名できることを知りました。スクリプトに署名した後、ユーザーは上記の設定を手動で編集する必要はありません。
ウェブサイトは、Drupal CMS の下の Linux プラットフォームでホストされています。
スクリプトに署名する方法 (どのツールをダウンロードする必要があるか、証明書を作成する方法など) について詳細なステップバイステップの手順を教えていただければ幸いです。設定不要となります。
javascript - XMLドキュメントのgetElementById、Mozilla拡張機能
document.getElementById
MozillaのDOMParserメソッドを使用してXML文字列から解析されたDOMでメソッドがサポートされていますか?XMLファイルを読み取り、DOMパーサーを使用してXMLをDOM要素に変換し、IDで要素を取得しようとするMozilla拡張機能を作成しています。getElementsByTagNameメソッドは機能しますが、getElementByIdは機能しません。常にnullを返します。
上記のコードを試してみました。alert(id)は適切なIDを返しますが、alert(resultNode)は毎回nullを返します。
javascript - このオブジェクトのタイプは何ですか? そして、それはどこに文書化されていますか?
この「xpcomInterface」のタイプがわかりません。この名前のクラスのドキュメントはありません。何か案が?
このスニペットは Mozilla の Web サイトからのものです。
- アップデート
nslBoxObjectにつながるboxObjectを見つけましたが、上記のように参照がありませんQueryInterface
。もう存在しない xulplanet.com への参照もあります。