2012-05-16 23 views
0

我需要做一個小書籤,但直接從我的頁面做。如何訪問用戶選擇的網址的DOM

我需要拉給定該網址的網頁document.title屬性。

所以說一個用戶輸入www.google.com,我想能夠以某種方式拉起google.com也許在iframe中並且訪問document.title屬性。

我知道bookmarklets(從書籤欄運行的javacript)可以訪問用戶所在站點的document.title屬性,然後將該信息與服務器進行Ajax匹配。

這實質上是我想要做的,但從我的網頁直接使用書籤。

+0

可能重複的[如何使用JQuery/JS獲取給定url(外部URL)的網頁標題](http://stackoverflow.com/questions/7901760/how-can-i-get-一個網頁標題的網頁給出的網址使用jquer) –

+0

我希望會有一個「黑客周圍」...書籤可以運行在任何頁面上... 。這使得它們在某種程度上變得強大......但是爲了在任何網站上運行該功能...用戶必須將其拖放到書籤中......如果只有這樣的黑客才能模仿它。 –

回答

2

根據This question 可以achive這個使用PHP,試試這個代碼:

<?php 

function getTitle($Url){ 
    $str = file_get_contents($Url); 
    if(strlen($str)>0){ 
     preg_match("/\<title\>(.*)\<\/title\>/",$str,$title); 
     return $title[1]; 
    } 
} 
//Example: 
echo getTitle("http://www.washingtontimes.com/"); 

?> 

不過,我屁股ume有可能用JS讀取文件內容,並執行搜索標籤的相同邏輯。

嘗試搜索here

+0

謝謝我希望找到一個.js解決方案......但可能我必須打到服務器。 –

+0

我編輯答案,檢查它。 –

1

不幸的是,它並不那麼容易。出於安全原因,JavaScript不允許訪問不在同一個域上的框架或窗口的文檔對象。這類事情必須通過請求後端PHP腳本來完成,後者可以獲取請求的頁面,瀏覽DOM並檢索<title>標記中的文本。如果你沒有這種能力,你所要求的會更難。

下面是基本的PHP腳本,它會抓取網頁和使用PHP的DOM擴展解析頁面的標題:

<?php 
$html = file_get_contents($_GET["url"]); 

$dom = new DOMDocument; 
$dom->loadXML($html); 
$titles = $dom->getElementsByTagName('title'); 

foreach ($titles as $title) { 
    echo $title->nodeValue; 
} 
?> 

演示:http://www.dstrout.net/pub/title.htm

+0

我希望有一個「黑客周圍」...... bookmarklets可以在任何頁面上運行......這使得它們以某種方式強大......但是爲了在任何網站上運行該功能......用戶擁有將其拖放到書籤中...如果只是有一種模擬這種情況的方法。 –

0

你可以寫一個服務器端腳本,該腳本將檢索您需要的頁面(即使用curl)和收杆DOM和JSON作爲返回所需的性能。然後用ajax調用它。