我想根據當前主機名設置頁面的基本href屬性。我已經生成了可以在不同主機名上查看的HTML頁面,這意味着生成一個基本href標籤將在一個主機名中工作,但在另一個主機名中將不正確。如何在Javascript中設置頁面的基礎href?
回答
這樣做的正確的方法是做標記的基於切斷電流主機名到document.write:
正確:
<script type="text/javascript">
document.write("<base href='http://" + document.location.host + "' />");
</script>
這種方法產生了在IE中正確的結果, FF,Chrome和Safari。它產生一個(正確的)不同的結果dowing以下:
不正確:
<script type="text/javascript">
var newBase = document.createElement("base");
newBase.setAttribute("href", document.location.hostname);
document.getElementsByTagName("head")[0].appendChild(newBase);
</script>
我在使用這種方法時遇到了谷歌爬蟲的一些麻煩,我沒有在'和/>之間放一個空格,抓取工具將我的基礎href解釋爲document.location.hostname'/>。這可能是此解決方案的一個問題。有關詳細信息,請參閱:http://www.google.com/support/forum/p/Webmasters/線程?TID = 2cff8eadfdf3a393&hl = en&fid = 2cff8eadfdf3a393000498a325f9c75d – 2010-12-30 18:22:58
沒有理由說明爲什麼'document.write'會是「正確的」,並且在文檔樹中正確插入節點會是「不正確的」。這個問題屬於「解決錯誤問題」的範疇,但這裏描述爲「正確」的方法通常會在錯誤的地方插入一個「基本」標籤。如果代碼位於'head'部分,那麼這是無用的(爲什麼不把正確的'base'標籤作爲普通的HTML?),並且如果它在其他地方執行,通常會將'base'插入到'body'中。 – 2013-06-02 18:19:27
我很好奇爲什麼「不正確」的方法是不正確的。 – 2014-12-18 14:35:46
<script>
document.write("<base href='"+ window.location.protocol +'//' + window.location.host + "' >");
</script>
我想你最好做這種方式
<script type="text/javascript">
document.head.innerHTML = document.head.innerHTML + "<base href='" + document.location.href + "' />";
</script>
由於location.hostname
不返回應用程序上下文根!您還可以在控制檯console.log
上登錄document.location
以查看document.location
上的所有可用元數據。
- 1. 將基礎href設置爲/
- 2. Gulp:如何在生產上設置不同的基礎href
- 3. 如何從頁面URL設置href值?
- 4. 如何設置magento中的基礎URL?
- 5. Magento - 如何在頁面的基礎上包含JavaScript文件
- 6. Wicked_pdf設置頁腳高度或邊緣頁面的基礎
- 7. 如何在單個頁面中設置href javascript/html5應用程序
- 8. 如何在子頁面上設置JavaScript?
- 9. 如何設置sammy的基礎網址?
- 10. IE問題的基礎href
- 11. 在Intellij中如何在每個文件的基礎上將JavaScript設置爲es6?
- 12. jQuery Mobile緩存頁面和HTML基礎href
- 13. 在Ruby/Javascript中設置按鈕的href
- 14. 如何在XCode 3.2.3中設置3.1的基礎SDK?
- 15. 如何在Rails中爲Sidekiq設置新的密鑰基礎?
- 16. JavaScript的基礎
- 17. Symfony3環境基礎設置
- 18. PHP語言基礎設置
- 19. 如何在Laravel 4.2中設置基礎URL /子文件夾
- 20. 如何在CI中設置子域基礎url?
- 21. 如何在config.xml中設置基礎URL zend框架
- 22. 如何在'in'子句中設置字段基礎?
- 23. 如何在ublas矩陣中設置基礎索引?
- 24. 如何在Mongoid中以每個集合爲基礎設置「allow_dynamic_fields」?
- 25. 如何在Phalcon中設置404頁面
- 26. 如何在查詢的基礎上設置JDBC的時區?
- 27. 如何在JavaScript中自定義頁面設置print
- 28. 在ASP.Net基礎頁面中獲取特定頁面信息頁面
- 29. 如何在每個目錄的基礎上設置JSHint選項
- 30. 如何在DataTables按鈕中設置href?
我通常有一個常量JS文件,我將其設置爲'$ .serverRoot'作爲主機的相對根目錄(例如'$ .serverRoot ='/ myapp /';' – 2010-08-16 16:03:00
這適用於AJAX請求,但是如果我要調整所有的圖像路徑並鏈接hrefs來解釋一個Javascript變量,我必須做大量的工作。使用基礎href標籤解決了我遇到的很多問題同一個HTML文件可以通過不同的主機名訪問,但是它引入了一個主機名上的路徑不正確的問題 – 2010-08-16 16:07:15