script
JavaScript で新しいプログラミング言語を作成しました。タグを使用する他のスクリプトと同じように、ユーザーがその言語を Web ページに含められるようにしたいと考えています。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>My Prog Lang</title>
<script src="scripts/myProgLang.js"></script>
<script type="text/my-prog-lang" src="scripts/index.mypl"></script>
</head>
</html>
アイデアはmyProgLang.js
、すべてのスクリプトの内容を取得して実行することです。
window.addEventListener("DOMContentLoaded", function () {
var scripts = document.querySelector('script[type="text/my-prog-lang"]');
var length = scripts.length;
for (var i = 0; i < length; i++) {
var script = scripts[i];
var src = script.getAttribute("src");
var content = AJAX.getSync(src);
myProgLang.eval(content);
}
}, false);
このアプローチの明らかな問題 (同期 AJAX 呼び出しを行うことに加えて) は、異なるドメインのスクリプトが同じオリジン ポリシーに違反することです。
明らかな解決策は、 RequireJSなどのスクリプト ローダーを使用して、テキスト プラグインを使用してスクリプトをプレーン テキストとしてロードすることです。
ただし、このタスクのためだけに RequireJS フレームワーク全体を含めたくありませんでした。だから私は掘り下げて、この答えを見つけました: https://stackoverflow.com/a/4927418/783743
上記の回答によると:
script 要素の innerHTML プロパティは、script 要素が次の場合、スクリプトのコンテンツを文字列として提供する必要があります。
- インラインスクリプト、または
- スクリプトがロードしたこと (src 属性を使用している場合)
残念ながら、これは機能しません (少なくとも Opera では)。属性を使用してロードされたスクリプトには、プロパティsrc
を使用してアクセスできません。innerHTML
この問題に取り組むために他にどのようなオプションが必要ですか?