iT邦幫忙

0

js彈出視窗,網址不固定時該如何用變數取得?

  • 分享至 

  • xImage

由於目前開發時,會針對環境不同需要對應不同網址,但目前在網路上查到關於js彈出視窗時,網址都是放一個固定網址。
https://ithelp.ithome.com.tw/upload/images/20230803/20160999cNegMZa9My.png
自己試了一下,發現這個寫法竟然可以! 是吃的到href的變數!
想請問關於這個寫法的正確性? 有人也這樣寫過嗎
還有各位高手遇到這種問題時,又是怎麼寫的! 謝謝
https://ithelp.ithome.com.tw/upload/images/20230803/20160999dEkfammiWx.png

froce iT邦大師 1 級 ‧ 2023-08-03 16:32:11 檢舉
你也可以直接寫在 href 裡,前面指定是js就行:
<a href='javascript:window.open("http://facebook.com/", "_blank", "width=500, height=500")'>Execute JavaScript</a>
看你的習慣。
a05151988 iT邦新手 3 級 ‧ 2023-08-03 16:38:43 檢舉
我是建議把event拉出來寫javascript並停止默認的event,沒停止會觸發兩個click event,進而開啟兩個視窗。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
PinShengs
iT邦新手 5 級 ‧ 2023-08-03 17:19:51
<a href='#'>Execute JavaScript</a>
<script>
var link = 'http://facebook.com/';
   
$(function (){
   $('a').click(function (){
      window.open(link, "_blank", "width=500, height=500")
   })
})
</script>
0
Felix
iT邦研究生 2 級 ‧ 2023-08-04 08:11:45

單一寫法

只是取得 a 元素的 href 屬性值,下方寫法就可以了:

<a href="https://tw.yahoo.com/"
    onclick="window.open(this.href, this.textContent, 'width=500, height=500')">Yahoo</a>

然而,點擊連結會同時觸發 a 元素和 onclick 事件,就是瀏覽器會開啟一個索引標籤和一個彈出視窗。如果只是想要彈出視窗的話,就要換成下方寫法:

<a href="javascript:void(0)"
    data-href="https://tw.yahoo.com/"
    onclick="window.open(this.dataset.href, this.textContent, 'width=500, height=500')">Yahoo</a>

複合寫法

多個 a 元素的情況下,不建議綁定多個 onclick 事件,不僅浪費資源,網頁也會變得不易維護。

下方寫法只有綁定一個 onclick 事件,如果需要新增或刪除連結,只要調整 HTML 即可。

<ul id="list">
    <li><a href="https://www.bing.com/">Bing</a></li>
    <li><a href="https://www.google.com/">Google</a></li>
    <li><a href="https://tw.yahoo.com/">Yahoo</a></li>
</ul>
document.getElementById('list')
        .addEventListener('click', e =>
            window.open(e.target.href, e.target.textContent, 'width=500, height=500')
        );
froce iT邦大師 1 級 ‧ 2023-08-04 09:15:40 檢舉

你複合寫法綁在list上,使用者沒精確地點在a標籤裡,也會開空白的新視窗。
比較精確的寫法是要檢查點擊的元素

e.preventDefault()
if (e.target.tagName == 'A'){
      window.open(e.target.href, e.target.textContent, 'width=500, height=500')
}

我要發表回答

立即登入回答