2016-12-16 95 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

那麼,爲什麼你要加載這樣的CSS?而不是絕對路徑? – putvande

+0

另一種選擇是使用window.location.hostname將當前服務器捕獲到一個var,並將連接值傳遞到您的css路徑中(如果需要,使用字符串替換) – happymacarts

回答

0

在寫作之前,您可以添加一個<base>元素到您的html中。並將其設置爲您希望相關網址使用的基本網址。

<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