問題タブ [dotjs]
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 - Gmail が閉じないようにする / 表示し続ける
uppity タイプが開始される前の免責事項: これは「実際に」展開されることはありません。これは、Chrome アドオンによるローカルでの個人的な使用のみを目的としています。私は自分のサイトへの訪問者をだまそうとしているわけではありません。onbeforeunload をフックしたい人たちへのちょっとした非難を見てきました。
いくつかの背景
Chrome に関する私の最大の不満 (少なくとも Mac OS では) は、タブを閉じるボタンです。これは、複数のタブを開いていると (私が通常行っているように)、タブ自体がかなり小さくなり、頻繁に意図せずにタブを閉じてしまいます。したがって、タブの閉じるボタンでカバーされないクリック ターゲット領域は非常に小さいです。ニュース ストーリー、ブログ投稿、ドキュメントなどを含む特定のタブでは、煩わしくはありますが、それほど不便ではありません。タブを再度開くにはCMD + Tを押すだけで、実際に害はありません。ただし、特定のタブ、特に Gmail には、閉じることによる明確な欠点があります。同僚との 1 つまたは複数のチャット ダイアログを頻繁に開いており、タブを再度開いてもチャット ダイアログが復元されず、新しいチャットを開始すると現在のチャット履歴が失われます (はい、保存されていますが、. コンテキストを逆方向にスクロールしても便利にアクセスできません)。タブを閉じるボタンを単純に削除するオプションを追加するように Google に求めるリクエストがいくつかあります (私は CMD+W を使用することを好みます) が、私はそれについて息を止めていません。
部分的な解決策
少し前に友人が、ドメインごとのカスタム JavaScript 実行を可能にするdotJS Chrome アドオンを教えてくれました。GreaseMonkey に似ていますが、少し異なります。いずれにせよ、私が定期的にアクセスする多くのサイトの問題/要望を「修正」する手段が得られ、これまでのところ非常に役立つことがわかりました. 先日、ちょっとした JavaScript を使えば、Gmail などのタブを開いたままにしておくことができるのではないかと思いつきました。タブを閉じる前に、正規表現に基づいてプロンプトを表示する小さなスクリプトをまとめました。コードの要点は次のとおりです。
見よ、これは私が試したほとんどのサイトでうまくいった。1 つを除いて: Gmail。それを訂正させてください:Gmailタブを閉じることを確認するように促す限り、それは機能し、それを閉じないことを選択した場合、タブを開いたままにしますが、ダイアログが私に促す前に、ページは完全に消えてしまいました白い。要素インスペクターは、マークアップがすべて残っていることを示し (私が知る限り)、要素のスタイルは何かを隠してはならず (つまり、表示: なし、可視性: 非表示など)、要素の配置はまだです。正しい (例: 可視領域内にある)。要素を 1 つずつ削除して、Gmail インターフェースを覆い隠しているものがあるかどうかを確認しましたが、画面上に表示することはできませんでした. 私は一生、何が起こっているのか理解できません。私' Gmail が私が知らない何らかのイベント (on*before*beforeunload?) に引っかかっているのか、Google のブラウザが Gmail ページで何か特別なことを行っているのか、または何が奇妙な動作を引き起こしているのかはわかりません。Google Reader は、私がテストした他のすべてのサイトと同様に、この奇妙さの影響を受けません (ページのコンテンツを閉じないようにして保持できます)。
この問題の原因を知っている人はいますか?
記録として、Mac OS X 10.6.5、Google Chrome 10.0.648.205、および dotJS 1.3 を実行しています。
フィードバックをお待ちしておりますが、タブのピン留め、ワークフロー/使用方法の変更 (マウスでタブを選択しないなど) などを含む解決策は探していません。具体的には Gmail (またはおそらく Chrome) が何であるかを知りたいです?) ここでの私の努力を妨害しています。前もって感謝します。
google-chrome-extension - コンテンツ スクリプトから background.js にメッセージが送信されない
コンテンツ スクリプトを使用して、独自の JS ファイルをページに挿入しようとしています。私がこれを行おうとしている方法は、dotjs と呼ばれる Chrome 拡張機能で使用されるシステムに基づいています。この拡張機能は、マシン上で小さなサーバーを実行し、そのサーバーからファイルを取得するために AJAX を localhost に再要求します。
Same Origin Policy により、コンテンツ スクリプトではなく background.js から送信された場合にのみ、これらの AJAX リクエストが通過することはかなり確実です。また、バックグラウンド ページでのみ機能する webRequest も使用する必要があります。ただし、ページ自体に内容を挿入する必要があるため、コンテンツ スクリプトが必要です。したがって、私の拡張機能は、バックグラウンド ページにメッセージを送信するコンテンツ スクリプトと連携し、必要なすべての webRequest と AJAX を実行するように要求します。
問題は、メッセージが background.js によって受信されていないように見えることです。ご覧のとおり、background.js の onRequest ハンドラに console.log() がいくつかありますが、それらはコンソールに表示されません。
マニフェスト.json
dotjs.js
background.js
html - html 属性を使用することによる DOM ペナルティ
アプリケーションのサードパーティのスクリプト作成を容易にするために、HTML5 データ属性を使用することを考えています。したがって、次の 2 つのケースを考えてみましょう。
- のようなページには 10,000 個の HTML 要素があります
<div>Sticker</div>
。 - のような他の 10'000 HTML 要素があります
<div data-id="{{id}}" data-category="{{category-id}}">Sticker</div>
。
2 番目のケース (attrs の存在) は、おそらく DOM/レンダリングのパフォーマンスに影響しますね。もしそうなら、いくらですか?
明確にするために、データ属性を自分で使用する予定はなく、サードパーティのスクリプトまたはブラウザー アドオン用に公開するだけです。dotjs などを検討してください。データ属性を使用すると、ページのスクレイピング/クロールが非常に簡単になります。
javascript - javascript を挿入して GitHub wiki ページで MathJax を有効にする方法は?
GitHub wiki ページはMathJaxをサポートしなくなりました。dotjs Chrome 拡張機能は、これらのページで MathJax を有効にする方法のようです。
これは、github.com ページで実行する JavaScript を作成する最初の試みであり、MathJax を有効にするために必要な正しいコードを挿入します。
ただし、これは機能せず、Chrome JavaScript コンソールに次のエラーが表示されます。
正しい JavaScript は何ですか?