2012-02-04 13 views
4

明らかに、JSONオブジェクトはリンクされたスクリプト内で渡すことができます。私はこの作品正確にどのように把握しようとしている(またはそれがない場合): http://getfirebug.com/firebuglite#ScriptJSONOptionsJavaScriptコードの内部<script>タグ

+0

あなた([実用的な、釈明](http://stackoverflow.com/faq#dontask))の質問は正確には何ですか? – Jeroen

+1

@Jeroen:これはどのように機能しますか? – SLaks

答えて

8

要素にsrc属性があるため、コンテンツは実行されません。厳密には合法ではありません。 HTML5 specは言う:

src属性がある場合は、要素が空のどちらかであるか、また、スクリプトのコンテンツ制限に一致するスクリプトのみのドキュメントが含まれている必要があります。

このコンテンツは有効なJSONでも有効なJavaScriptでもありません。プロパティ名は引用符で囲まれていないため、有効なJSONではありません。 startInNewWindowの後のコロンは、ラベル付きステートメントを含むブロック式のように見えますが、法的にそこに表示されないため、有効なJavaScriptではありません。

ロードされているスクリプトは、常に最後のscript要素を探し、その内容を解析することができ、言った:ここ

var scripts = document.getElementsByTagName('SCRIPT'); 
var lastScript = scripts[script.length - 1]; 
var content = eval(lastScript.innerText || lastScript.textContent); 
+1

ありがとうございます!関連性:http://ejohn.org/blog/degrading-script-tags/ – user996015

5

ブラウザが<script src />タグ内の任意のコンテンツを無視します:

<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"> 
{ 
    overrideConsole: false, 
    startInNewWindow: true, 
    startOpened: true, 
    enableTrace: true 
} 
</script> 

私は放火犯liteのドキュメントでそれをここに気づきました。

しかし、Firebug Lite Javascriptでは、具体的には<script>というタグがあり、内容を手動で解析します。

+0

すごく感謝します。私はそれを見つけたと思う! http://code.google.com/p/fbug/source/browse/lite/branches/firebug1.5/build/firebug-lite-debug.js#478 – user996015

1

は誰もが興味を持っている場合にはJSONオブジェクトを解析し、問題のコードです。

// process the Script JSON Options 
var innerOptions = FBL.trim(script.innerHTML); 
if (innerOptions) { 
    var innerOptionsObject = eval("(" + innerOptions + ")"); 

    for (var name in innerOptionsObject) { 
     var value = innerOptionsObject[name]; 

     if (name == "debug") { 
      Env.isDebugMode = !!value; 
     } 
     else if (name in Env.Options) { 
      Env.Options[name] = value; 
     } 
     else { 
      Env[name] = value; 
     } 
    } 
} 

http://code.google.com/p/fbug/source/browse/lite/branches/firebug1.5/build/firebug-lite-debug.js#478

関連する問題