[jQuery] 搜尋 iframe 網頁裡的元素

[jQuery] 搜尋 iframe 網頁裡的元素

之前用 Tampermonkey 寫了一個 script,

方便在台北市圖書館的網頁上,

點下書籍連結時,是開啟在新分頁上,而不是直接跳轉。

不過最近發現這個 script 失效了…

 

檢查了一下,原來是因為圖書館網頁上多加了一層 iframe,

所以原本的 $(“a[href^=bookDetail]”) 這種寫法是取不到東西的,

要改成 $(“iframe”).contents().find(“a[href^=bookDetail]”) 才行~

 

下面這就是我改好的 Tampermonkey script,

可以在圖書館的書籍搜尋頁面上,點下書籍時都開啟在新分頁:

// ==UserScript==
// @name         Taipei City Library: Open New Window when Clicking Book In Search Result
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://book.tpml.edu.tw/webpac/bookSearchList.do*
// @grant        none
// ==/UserScript==

function waitUntilSearchComplete()
{
    console.log("Wait search complete...");
    var elem_search = $("iframe").contents().find(".keysearch");
    if (elem_search.length <= 0 || elem_search.text().indexOf("共查得") < 0)
    {
        setTimeout(waitUntilSearchComplete, 1000);
        return;
    }

    // Open new window when clicking any book in the search result
    console.log("Search is completed. Modifying a links.");
    $("iframe").contents().find("a[href^=bookDetail]").attr("target", "_blank");
}

(function() {
    'use strict';

    waitUntilSearchComplete();
})();

 

參考資訊:[jQ]如何存取控制 iframe 中的元素及方法 | 男丁格爾’s 脫殼玩

(本頁面已被瀏覽過 29 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料