jQueryの.append()を使用してそれらをヘッドに追加するだけでよいと思いましたが、外部スクリプト(Knockout.js)では機能していないようです。
これが、ページが読み込まれたときに実行されるコードです。スタイルシートでは機能しているようですが、外部スクリプトでは機能していません。
if (window.jQuery === undefined || window.jQuery.fn.jquery !== '1.8.0') {
var script_tag = document.createElement('script');
script_tag.setAttribute("type","text/javascript");
script_tag.setAttribute("src",
"http://code.jquery.com/jquery-1.8.0.min.js");
if (script_tag.readyState) {
script_tag.onreadystatechange = function () { // For old versions of IE
if (this.readyState == 'complete' || this.readyState == 'loaded') {
scriptLoadHandler();
}
};
} else {
script_tag.onload = scriptLoadHandler;
}
// Try to find the head, otherwise default to the documentElement
(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
} else {
// The jQuery version on the window is the one we want to use
jQuery = window.jQuery;
main();
}
function main() {
jQuery(document).ready(function($) {
$("head").append("<script type='text/javascript' src='http://knockoutjs.com/js/jquery.tmpl.js'></script>");
$("head").append("<script type='text/javascript' src='http://cloud.github.com/downloads/SteveSanderson/knockout/knockout-1.2.1.js'></script>");
$("head").append("<link href='style.css' rel='stylesheet' type='text/css' />");
// Then it appends the necessary HTML code [...]
});
}
これが私のテスト環境で、Firebugで動作している現在のコードを確認できます。
ページが読み込まれた後、Firebugに表示される内容は次のとおりです。
編集:コード内のKnockout.jsスクリプトに問題があるようですので、それらを調べます。動的スクリプトに関するコメントと回答をありがとうございます。私は何かを学びました:)