37

HTMLのheadセクションにDOM要素を追加したい。jQuery では、head セクションに DOM 要素スクリプトを追加できず、代わりにReferenceが実行されます。

セクションscript内にタグを付けてスクリプトを書きたい。<head>

var script = '<script type="text/javascript"> //function </script>'
$('head').append(script);

関数でこのようなもの。jQuery と javascript\ を試しましたが、うまくいきません。

scriptjQueryやjavascriptでheadに追記・書き込みする方法を教えてください。

.innerHTML()DOM 要素を追加するために JavaScript を使い果たしましたが、head への書き込みがうまくいきません。jQuery 2.0.3 と jQuery UI 1.10.3 を使用しています。

base64 でエンコードされたスクリプトを head セクションに追加したいと考えています。このような base64 デコーダー js を使用して JavaScript をデコードし、head セクションを配置します。

//編集済み
となります

$.getScript('base64.js');
var encoded = "YWxlcnQoImhpIik7DQo="; //More text
var decoded = decodeString(encoded);
var script = '<script type="text/javascript">' +decoded + '</script>';
$('head').append(script);

エンコードされたスクリプトと追加を 1 つの JavaScript ファイルに収めるため。base64.jsブラウザ用のその他のデコーダ JavaScript ファイルを使用したいのですが、受け入れられませんatob()

4

12 に答える 12

74

これを試して

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'url';    

document.head.appendChild(script);
于 2013-09-13T11:14:36.697 に答える
8

試してみる ::

var script = document.createElement("script");
script.type="text/javascript";
script.innerHTML="alert('Hi!');";
document.getElementsByTagName('head')[0].appendChild(script);

于 2015-12-15T21:33:08.170 に答える
7

著者によると、彼らはスクリプト ファイルへのリンクではなく、head 内にスクリプトを作成したいと考えています。また、jQuery (この場合、ほとんど有用な機能を提供しません) による複雑さを避けるために、バニラ JavaScript がより適切なオプションである可能性があります。

それはおそらく次のように行われるかもしれません:

var script = document.createTextNode("<script>alert('Hi!');</script>");   
document.getElementsByTagName('head')[0].appendChild(script);

これが機能する理由について混乱している可能性がある人への説明: Web ページ内のすべてのコードはテキストです。テキストは Web ページの最も基本的なタイプです。ブラウザは、テキストが最後に到達するまで、ルールに従って処理を開始します (これにはループバック、再帰などが含まれます)。

これが機能するには、このタグを作成するスクリプトもヘッダーにある必要あります。ブラウザは、処理時に、ヘッダーの最後に到達する前にこのコードをヒットし、必要なスクリプトをヘッダーに追加し、その後処理を続けるにつれてそれに到達します。信頼できる終了フッターがある場合は、「head」を「footer」などに変更できますが、スクリプトを持つサイト全体で最も信頼できるのはヘッダー タグの存在であることを考慮すると、この場合最も便利なオプションになります。 .

于 2015-12-15T01:04:24.577 に答える
2

これは古い質問であり、スクリプトタグをヘッドに追加することについて具体的に尋ねていることは知っていますが、OPの説明に基づいて、実際には他のJS関数を介して取得されたJSコードを実行するだけです。

これは、スクリプト タグをページに追加するよりもはるかに簡単です。

単に:

eval(decoded);

Eval は、JS の文字列をインラインで実行します。DOM に追加する必要はまったくありません。

ページの読み込み後にインライン スクリプト タグを DOM に追加する必要が実際にあるとは思いません。

詳細はこちら: http://www.w3schools.com/jsref/jsref_eval.asp

于 2015-05-12T23:43:26.937 に答える
1

あなたができる:

var scriptTag = document.createElement("script");
scriptTag.type = "text/javascript";
scriptTag.src = "script_source_here";
(document.getElementsByTagName("head")[0] || document.documentElement ).appendChild(scriptTag);
于 2013-09-13T11:16:00.903 に答える
1

内部にスクリプトを含むスクリプトタグを追加する場合は、使用します

var script= document.createElement('script');
script.text = "alert('Hi!');";
document.head.appendChild(script);
于 2021-12-01T02:11:22.453 に答える