2016-12-16 6 views
0

ここに問題があります。私はカレンダーを印刷しようとしています。私はいくつかのCSSをロードする必要がありますが、すべてのCSSのリンクはこのような絶対パスを持っています/path/to/css.css。だから私は、単純にウィンドウを開く場合:親ウィンドウと同じ場所に空白のウィンドウを開きます

var win = open('', '_blank') 
win.document.write(htmlContent) 

これは正しくHTMLを描画しますが、それが正しいホスト名を指していないので、それは、CSSをロードしません。

後で場所を変更するとリダイレクトが作成されるため、実際には解決策にはなりません。

は、私はこれで私が欲しいものを達成することができるよ:

function open_calendar(content) { 
    var win = open(window.location, 'Calendar')   

    win.addEventListener('load', function() { 
    win.document.write(content) 
    }) 

    return win 
} 

ウィンドウは、ページがロードされたとき、それは私が望んでいたものに内容を変更し、同じ場所を開きます。その結果、それはまだ同じ場所を使用し、私は自分のカスタムhtmlを描画することができます。欠点は、私は時間がかかるかもしれないページを読み込まなければならないということです...私は、同じ結果を達成するためにあまりにもハッキリな方法があるのだろうかと思っていました。

+0

となるでしょう。絶対パスではない? – putvande

+0

別のオプションは、現在のサーバをwindow.location.hostnameを使用してvarにキャプチャし、あなたのcssパスに連結した値を渡すことです(必要に応じて文字列置換を使用します) – happymacarts

答えて

0

書き込みを行う前に、<base>要素をhtmlに追加することができます。相対URLに使用するベースURLに設定します。

<base href="http://example.com/some/path"> 

<base>は、相対リンクに使用するベースURLをブラウザに示します。したがって、基底をhttp://example.com/baseに設定し、相対リンク/path/to/css.cssを使用した場合、使用される結果のURLはhttp://example.com/base/path/to/css.css

関連する問題