作者danny0838 (道可道非常道)
看板Browsers
標題Re: [問題] 開啟多個javascript連結
時間Wed Nov 3 20:54:30 2021
※ 引述《alalal (何小明)》之銘言:
: 大家好,請教大家在 Firefox 或 Edge 上
: 是否可以同時開啟多個Javascript超連結?
: 如下
: javascript:openWin('ShowCompProfile.ASP?RecNo=22332%27)
: 試過幾個 Firefox 的擴充套件
: 如 Open Multiple URLs
: Open links in Tabs
: Snap Links Plus
: Open Selected Links等等
: 一般html的超連結可以,但javascript的超連結就不行
: 想請問大家有解決的方法嗎?
: 謝謝
javascript: 連結的功能就是在目前頁面執行一段 JavaScript 程式碼,
在新分頁開啟是不會有作用的。
如果 javascript: 連結本身的程式碼的功能就是「開啟新分頁並載入XXX」,
有個做法是模擬把框選範圍中每個超連結都點一下。
只是對一般超連結而言,頁面只能切換一次,
全部都點只會切換到其中一個分頁,
所以一般來說不太會有人做這個功能。
這功能想做的話並不困難,把以下網址加到書籤小工具(斷行請替換為半形空白),
框選想要「全部都點一下」的超連結們,再點擊這個書籤小工具就可以了:
javascript:(function(){ const ranges = []; const sel =
window.getSelection(); for (let i = 0, I = sel.rangeCount; i < I;
i++) { ranges.push(sel.getRangeAt(i)); } const nodeRange =
document.createRange(); const elems =
document.querySelectorAll('a[href], area[href]'); for (const elem of
elems) { if (!elem.isConnected) { continue; }
nodeRange.selectNode(elem); if (!ranges.some(range =>
range.compareBoundaryPoints(Range.END_TO_START, nodeRange) <= 0 &&
range.compareBoundaryPoints(Range.START_TO_END, nodeRange) >= 0)) {
continue; } elem.click(); } })();
--
《終結內容農場》瀏覽器套件
Chrome:
http://bit.ly/CFTGC
Firefox:
http://bit.ly/CFTFx (桌機 & Android 手機)
真相1:
http://bit.ly/CFTss1
真相2:
http://bit.ly/CFTss2
詳細介紹:
http://bit.ly/CFTinfo
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.225.87 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Browsers/M.1635944075.A.860.html
※ 編輯: danny0838 (1.164.24.134 臺灣), 11/05/2021 22:46:20
1F:推 t7yang: 我的第一個想法也是用書籤工具就可以做到了,但是我想到的 11/06 00:22
2F:→ t7yang: 比較簡單,其實你就 querySelectorAll 一次過把所有元素 11/06 00:22
3F:→ t7yang: 都選出來然後 forEach 跑一次 elm.click() 就好了 11/06 00:22
4F:→ t7yang: 因為這段程式碼本來就是在原分頁的環境中執行的,就算跳到 11/06 00:23
5F:→ t7yang: 其他頁面了,也根本不影響原分頁 JS 的執行。 11/06 00:23
6F:→ t7yang: 我自己測試的結果也可以的 11/06 00:24
7F:→ t7yang: goonlinetools.com/snapshot/code/#3ie8iwzxq49k26xf1c8rd 11/06 00:41
網頁中通常不會只有 javascript 連結,也會有其他普通的超連結,
如果完全不篩選無差別點擊所有超連結,
可能在按到普通超連結就離開目前分頁了,
離開目前分頁可能會有一點延遲(視瀏覽器實做及硬體設備而定),
但無法保證所有 javascript 連結都會在那之前被開啟。
況且就算可以,使用者也不一定想開啟所有連結,
所以還是支援只操作選取範圍的超連結會比較有可控性一點。
※ 編輯: danny0838 (1.164.24.134 臺灣), 11/06/2021 11:36:07
8F:→ t7yang: 要怎麼 query 當然使用者自己決定,我只是強調 JS 那段 11/06 20:02
9F:→ t7yang: 不會有影響 11/06 20:02
「JS 那段不會有影響」指的是前面寫的
「就算跳到其他頁面了,也根本不影響原分頁 JS 的執行」?
這不對啊,如果頁面在執行完 JS 以前就跳到其他頁面,
原來的 JS 就會有一些沒執行到,怎麼能說是沒影響?
以下是測試頁:
https://jsfiddle.net/t075vwgj/1/
試試在不同瀏覽器執行,點擊 "Click all links" 按鈕,
如果你說得對,應該在任何瀏覽器都會看到跳出 5 個視窗。
而我測試結果是不會。
※ 編輯: danny0838 (1.164.24.134 臺灣), 11/07/2021 11:53:22
10F:→ t7yang: 如果不是 target blank 就沒辦法囉,原本頁面的已經不在XD 11/07 14:58
你這樣又回到原點囉...
原來的考量就是因為一般網頁中沒有開啟在原分頁的一般超連結的機率太小,
一次點全部連結無法正常運作的風險太高,所以才不這麼做的啊XD
※ 編輯: danny0838 (59.115.13.230 臺灣), 11/08/2021 22:37:50
11F:→ t7yang: 阿災,如果他的情況是連結都開在新分頁就快速寫一下就解決 11/09 16:05
12F:→ t7yang: 了,解決個案就好,不用寫通解 哈 11/09 16:06