問題タブ [safari-extension]
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.
javascript - Safari 拡張機能で特殊文字を含む XMLHttpRequest が機能しない
http://myphotodiary.comの APIで認証する Safari の拡張機能を作成しようとしています。また、次のような特殊文字を含まないすべてのパスワードでうまく機能します。
å、ä、öとスペース
現在、次のコードが機能しています。
このコードは、特殊文字を含まないすべてのパスワードでうまく機能しますが、ログイン情報を
失敗し始めます。
この正確なコードはSafariで機能しますが、拡張機能に入れると機能しません。
認証に組み込まれた xmlHttpRequest.open も試しました
同じ結果で。
これはグローバルページの私の頭です:
「リソースの読み込みに失敗しました: キャンセルされました」というメッセージが表示され、これらは Safari が送信しているヘッダーです。
html - Safari-5拡張機能に関連付けられたローカルJavaScriptデータベースをどのように作成できますか?
私は小さなサファリエクステンションを作成しようとして遊んでいました。ほとんどの場合、それを楽しんだり、何ができるかなどを確認したりしました。
とにかく、私は自分の拡張機能のデータをローカルデータベースに保存することを考えていたので、ページの読み込み全体で、必要な場所に常にデータを保存していました。
グーグルで少し検索して、JavaScriptデータベースを作成するSafariリファレンスライブラリからこのスニペットを見つけました。
これは非常にうまく機能し、私が望むようにデータベースを作成します。唯一のことは、このデータベースはドメイン固有であるため、データベースを作成するスクリプトは、アクセスしたドメインごとにデータベースを作成しますが、これは私が望んでいたものではありませんでした。
では、可能であれば、サファリ拡張機能に割り当てることができるローカルストレージデータベースを作成して、すべてのドメインで利用できるようにするにはどうすればよいでしょうか。
javascript - JavascriptXMLHttpRequestログインプロンプト
私はjavascriptを初めて使用し、GmailのAtomフィードを解析して、未読のメールの数を表示する簡単な拡張機能を作成しました。
私の問題は、何らかの理由でGoogleアカウントにログインしていない場合、拡張機能がフィードをチェックしようとすると、Safariが次のようなログインボックスを表示することです。
代替テキストhttp://img576.imageshack.us/img576/743/loginhd.png
そして、私は10秒ごとにチェックしているので、これらのプロンプトは積み重なって、ログインできないところまでブラウザを乗っ取っています。また、このプロンプトを介したlogginは何もしないようです。
フィードを読み取ろうとして失敗したことを無視する方法はありますか?私のリクエストは次のようになります:
safari - Safari拡張機能、Fluidアプリ
アドレスバーのRSSボタンのクリックをキャプチャし(feed://プロトコルを呼び出す)、SafariのフィードリーダーではなくGoogleリーダーにリダイレクトするSafariの簡単な拡張機能を作成しました。ただし、ユーザーがFluidアプリ(Googleリーダーを開くアプリ)をデフォルトのフィードリーダーとして設定している場合、インターセプトは機能しません。
別のアプリに送信されているリクエストをキャプチャする既知の方法はありますか?現在、拡張機能はキーオンされていますdocument.beforeload()
が、ドキュメントが新しい「アプリ」で開かれている場合は、もちろん到達することはありません。
キャッチできる別のイベントはありますか?拡張機能がキャッチできるイベントの包括的なリストは見つかりませんでした。
ありがとう。
javascript - Safari extension running injected javascript multiple times
I have copied the code from the following example on the Apple Developer site.
When I run the extension, it runs normally except the injected script is run 3 times causing the output to be written to console.log 3 times. I also put a alert in the doBigCalc function and it opened 3 alerts.
Why is this happening/is it supposed to happen?
macos - Safari拡張ファイルのUTTypeIdentifierとは何ですか?.safariextz
com.apple.safari.bookmark
Safariブックマークやcom.apple.ical.ics
iCalカレンダーのようにね。
ありがとう。
safari - 複数回実行されるインジェクション スクリプト
私はドキュメントを読み、これが予想されることを理解しています:
スクリプトは、最上位ページと、iframe などの HTML ソースを持つすべての子に挿入されます。ブラウザのタブごとにスクリプトのインスタンスが 1 つしかないと仮定しないでください。
しかし、私は疑問に思っています:
- iframe 以外に、"HTML ソース" (画像? オブジェクト?) を持つ要素は何ですか? 「HTML ソース」という用語は、私の耳には不快なほどあいまいです。
- スクリプトを実行している要素を検出する方法はありますか?
推奨どおり、それを判断して iframe を除外しましたwindow === window.top
が、他の要素がまだスクリプトを実行しており、必要以上に実行しています。
ありがとう。
javascript - ウィンドウの履歴オブジェクトのURLにアクセスする
SafariでJavascriptのHistory
オブジェクトのURLにランダムにアクセスする方法はありますか?特別にフォーマットされたページリクエストで、前のページのURLをキャプチャする必要がある拡張機能を作成しています。私が見つけたものから、History
オブジェクト定義はブラウザ間で非標準です。Safariは、そのプロパティと、履歴内length
で実際に移動する標準メソッドのみを公開しているようです。他の実装が公開current
しているプロパティprevious
やnext
プロパティについては、Safariが同じことをしていることを示すものは何も表示されません。
私も試しましdocument.referrer
たが、この場合は入力されていないようです。
以前にアクセスしたURLを特定のページに表示する必要があります。そのURLにアクセスする他の方法はありますか?
ありがとう。
javascript - Safari 拡張機能での同期メッセージの受け渡し
私はサファリ拡張機能に取り組んでおり、サファリ拡張機能で同期メッセージの受け渡しを行う方法があるかどうか疑問に思っていました。
注入された JavaScript からグローバル ページにメッセージを送信して、注入された JavaScript に結果が返されるまで待機させたいと考えています。コードをグローバル ページからメッセージを受信する別の関数に分割する必要があるのは、非常に複雑に思えます。
safari - ページ読み込み前のリダイレクト
インジェクションスクリプト(開始スクリプト)があり、その最終的な目標は別のURLにリダイレクトすることです。そのインジェクションスクリプトは拡張設定にアクセスする必要があるため、グローバルHTMLファイルにメッセージを送信します。そのグローバルファイルは設定をチェックし、プロパティを設定することで適切なURLにリダイレクトしsafari.application.activeBrowserWindow.activeTab.url
ます。
私が見つけたのは、多くの場合、中間ページが最初に読み込まれ、せいぜい迷惑なUXになり、最悪の場合はエラーが発生するということです。これはメッセージングの非同期性の結果であると思いますが、それを停止する方法を見つけることができませんでした。
拡張設定からの読み取り中にデフォルトの動作(最初に要求されたページの読み込み)を防ぐ方法はありますか?
ありがとう。