ejs 是在 server 端 render html
所以我想是沒辦法取得 window 的
有點搞不太懂你的需求
如果你是要連到同個主機的頁面
html改成
<a href="/dashboard/client" target="_blank">
</a>
就可以了吧
如果是要連到特定主機
就把 url 以變數的方式 render 出來
e.g.
app.js
...
const baseUrl = 'http://127.0.0.1:3000';
...
index.ejs
...
<a href="<%=`${baseUrl}/dashboard/client`%>" target="_blank">123</a>
...
<a href="/dashboard/client" target="_blank">
</a>
這個寫法會直接變成 http:///dashboard/client
第二個寫法OK
但我是因為要隨著檔案的位置不同
才想說用 window.location.origin 去取得當下的主機位址
而不要寫死在 http://127.0.0.1:3000
但是用這個語法會出現
error log : window is not defined
用 location.origin
error log: location is not defined
謝謝你
用ejs
把window.location.origin
取得的主機網址,套用到連結上。
codepen
<% const domain = window.location.origin; %>
<a href="<%= domain + '/dashboard/client' %>" target="_blank">Dashboard</a>
其實,用javascript
已經可以做到,不需要用ejs
。
codepen
<a href="javascript:redirect('/dashboard/client')">Dashboard</a>
<script>
const domain = window.location.origin;
function redirect(path) {
const url = domain + path;
console.log( url );
//window.location.href = url; // 在現在的視窗內開啟
window.open( url, '_blank' ); // 在新的視窗內開啟
}
</script>