13

Google から提供される jQuery を除いて、スクリプトが完全に自己完結型 (画像 + js) になるように、jQuery プラグイン (Markitup) を埋め込みたい小さな GreaseMonkey スクリプトに取り組んでいます。

私はサイトhttp://www.greywyvern.com/code/php/binary2base64を見つけました。これは、CSS から basse64 として画像を提供するのと同じように、スクリプトを base64 でエンコードすると、javascript を href に埋め込むことができると述べています。

<script type="text/javascript" href="data:text/javascript;base64,dmFyIHNjT2JqMSA9IG5ldyBzY3Jv..."></script>

だから私はそれを試しましたが、OS XでFirefox 3.0.5を使用して、まったく動作しませんでした.

問題を特定するために小さなテスト ページを作成しましたが、そのページでも機能しませんでした。

<!DOCTYPE HTML>
<html>
   <head>
      <title>Title</title>
      <meta charset="utf-8">
   </head>
   <body>
      <script href="data:text/javascript;base64,YWxlcnQoJ2FzYWRhc2QnKTsK"></script> 
      <script>alert('a');</script>  
   </body>
</html>

base64 文字列 (YWxlcnQoJ2FzYWRhc2QnKTsK) によるとalert('asadasd');、2 つのアラートを受け取ることになっていますが、表示されるのは 2 つ目のアラートだけで、スクリプト タグ内にテキストとしてアラートが配置されています。

私は何か間違ったことをしているのですか、それともなぜこれがうまくいかないのですか、何かアイデアはありますか?

4

4 に答える 4

19

単なる考えかもしれませんが、「href」は「src」にすべきかもしれません。

于 2008-12-20T16:09:21.067 に答える
5

スクリプトタグの構文を確認すると、次のようになります

<script src="..."
        ^^^
        src NOT href

ここでデータ URI を使用しても、IE 6 では機能しません。

于 2008-12-20T16:09:52.610 に答える
2

それはおかしいです、私はまったく同じ問題に取り組んでいます:ページのすべてのテキスト領域にmarkItUpを追加するGreasemonkeyスクリプトを作成します。

現在、ライブラリスクリプト自体に問題はありません。とにかく、なぜBase64として挿入したいのかわかりません。指摘したように、それは大きくなります。
必要に応じてGMスクリプトに直接配置するか(jQueryを使用して行う人もいます)、<script src="someURL"></script>ドキュメントに動的にaを追加して、読み込みを待つことができます(ネット上には多くの例があります)(不便:トラフィックを作成します)ファイルを保持しているサイト)、または現在試しているように、GMの最新(0.8)機能を使用します。

// @require      jquery.js
// @require      markitup.js
// @resource     miuStyle style.css

必要なJSファイルは、ローカルコピーからGMスクリプトに自動的にロードされます。これは、高速で常に利用可能です。パックされたバージョンは使用しないでください。ここでは機能しません。set.jsにも問題があったので、スクリプトに直接入力しました。
それはうまく機能しますが、私はまだスタイルもアイコンも持っていません。
miuStyleテキストをWebページに配置し、すべての背景画像がPhotobucketなどでホストされている同じ画像をオフセット付きで参照するように変更する必要があると思います。残念ながら、@ resourceを使用しても、(CSSで)ローカル画像を使用する方法が見つかりませんでした。

残念ながら、私の回答はあなたの問題に対処していません(しかし、ジョンの発言は有効なようです)が、それはあなたを別のより単純な解決策に導くかもしれません。

于 2008-12-20T17:58:44.450 に答える