2014-10-01 32 views
1

對於我的研究,我使用IEEExplore,它提供FRAME(FRAMESET的一部分)內部的PDF文件,因爲IEEE希望展示我如何通過我的庫訪問其服務,並且「banner」信息顯示在頁面頂部的另一個FRAME中。因爲limitation of Chrome(請注意,如果您希望鼓勵Google修復它,請轉到該鏈接並單擊星形按鈕),Ctrl-F(查找...)搜索僅進入頂部文檔(或第一幀)。這是無用的,因爲PDF在第二幀。人們經常想要在一個剛剛打開的PDF文件中進行搜索。Bookmarklet to unframe PDF(IEEExplore)

Chrome瀏覽器中手動解決方法是將PDF框架上單擊鼠標右鍵,然後檢查元素,它看起來像

<frame src="http://example.com/abcd.pdf?...;isnumber=1234" frameborder="0"> 

然後右鍵單擊強調http://example.com/abcd.pdf?...;打開新的標籤

我正試圖在Chrome中寫一個bookmarklet(JavaScript裏面的JavaScript),它基本上可以自動執行這個過程。

我發現jQuery: Access frame in nested frameset,但我堅持如何獲得一個未命名幀的src=屬性。

回答

1

我找到了一個答案感謝a great blog by Iain Hoult。由於IEEExplore的PDF位於第二幀(從0開始)中,因此您只需將當前選項卡的URL設置爲第二幀的位置即可。

書籤的網址基本上是:

javascript:(function(){window.location=$(window.parent.frames[1].document.location).attr('href');})(); 
+0

謝謝你的絕招,效果很好&將節省我的時間噸 - 當考慮您要搜索的文件,9.5 10將是無用的,不值得保存到磁盤。 – 2017-01-14 04:38:20

1

使用OP的把戲我很快就遇到了這個問題:

Uncaught DOMException: Blocked a frame with origin "http://ieeexplore.ieee.org" from accessing a cross-origin frame. 
at <anonymous>:1:14 

這是由於Chrome瀏覽器的同源安全策略。不知怎麼的OP代碼如下修改後的版本也可以正常工作:

javascript:(function(){var a=document.body.getElementsByTagName("frame")[1].src;window.location = a.substring(0,a.indexOf("pdf")+3)})(); 
+0

嗯......我在最新的Chrome瀏覽器(57.0.2987.133)中看不到這個問題, – Fuhrmanator 2017-04-04 18:28:02