私は実際に、AJAX とポップアップ ウィンドウに基づく Web サイトのソース コード ビューアーを作成しようとしています。これにより、ビューアをカスタマイズできるようになります。構文にはhightlight.jsを使用していますが、そのライブラリを使用するのは初めてです。
プロセスは簡単です。
- AJAXを使用してURLを含むページHTMLを取得しています(ここではjQueryを使用しています)
- 結果のコンテンツをウィンドウに入れて表示します。
- ウィンドウでは、Highlight.js は (想定) コードを色付けするためのものです。
このトピックに似ています: Javascript を使用してブラウザで "ソースの表示" HTML ウィンドウをプログラムで開きますか? ただし、構文の強調表示が追加されています。残念ながら、ウィンドウにはコードが表示されていますが、そのウィンドウは色付けされていません。
これは関数全体です (クロスオリジン要求のフォールバックを提供します)
function show_source(link) {
$.ajax({
method: "GET",
url: link,
dataType: "html",
success: function (data) {
var source = data;
//parse special chars
source = source.replace(/</g, "<").replace(/>/g, ">");
// add <pre> tags to preserve whitespace
source = "<!DOCTYPE html><html><head><link rel='stylesheet' href='/css/include/default.css'><script src='/lib/include/highlight.pack.js'></script><script>hljs.initHighlightingOnLoad(document.getElementById('code'));</script></head><body><pre id='code' class='html'>" + source + "</pre></body></html>";
//now open the window and set the source as the content
var sourceWindow = window.open('', 'Source code of ' + link + '', 'height=800,width=800,scrollbars=1,resizable=1');
if (!sourceWindow || sourceWindow.closed || typeof sourceWindow.closed == 'undefined') {
alert("Please allows this popup window to be shown");
} else {
sourceWindow.document.write(source);
sourceWindow.document.close(); //close the document for writing, not the window
//give source window focus
if (window.focus) {
sourceWindow.focus();
}
}
},
error: function(){
window.open("view-source:"+link+"", "_blank");
}
});
}
しかし、コードを何度も検証したところ、すべて問題ないようです。Firefox 開発ツールは、CSS および JS ファイルが正常にロード (GET) され、JS エラーがないことを示しました。問題はどこだ?助けてくれてありがとう。
編集:不足している括弧を追加しましたが、あまり機能しません。