我試圖顯示從我的網頁上的其他網站的圖像拼貼。如果我知道直接鏈接,它可以正常工作,因爲我可以設置img src。但是,如果我只知道頁面的名稱和頁面上的圖像的id可以使一些jQuery調用來檢索src。跨域請求通過編號
這樣的事情,但所謂的另一頁上:
var imageSource = $("#pictureid").attr("src");
我試圖顯示從我的網頁上的其他網站的圖像拼貼。如果我知道直接鏈接,它可以正常工作,因爲我可以設置img src。但是,如果我只知道頁面的名稱和頁面上的圖像的id可以使一些jQuery調用來檢索src。跨域請求通過編號
這樣的事情,但所謂的另一頁上:
var imageSource = $("#pictureid").attr("src");
你想要的是通過對其他站點的AJAX調用來獲取HTML,然後通過它查找你感興趣的img
標記的src
屬性。所有現代瀏覽器都有某種儘管禁止使用相同原點策略 - 您無法對當前文檔域以外的任何內容進行AJAX調用(即,運行在example.org上的頁面上的腳本無法對foobar.com執行AJAX調用)。
這意味着你不得不求助於服務器端技術:在你選擇的服務器端語言中,從外部頁面加載HTML(大多數環境都綁定到libcurl中,它被設計用來做這件事)然後解析它以找到圖像。獲得URL後,您可以輕鬆將其插入到動態HTML中。
也就是說,在沒有許可的情況下深度鏈接圖像會違反網絡禮節,甚至可能是非法的,具體取決於您所在的管轄區域(畢竟濫用其他人的服務器爲訪問者提供帶寬,這可能屬於某些司法管轄區非法黑客行爲的定義);要做的好事是將圖像本身拉入,並在自己的服務器上託管副本,以便您使用自己的帶寬來提供服務。當然,請尊重您使用的圖像的版權以及(如果有的話)許可條款。
客戶端的JavaScript心不是爲此設計。你想要做什麼屏幕抓取。您可以通過多種方式來完成此任務,最簡單的方法是使用Yahoo的YQL以及使用Node.JS,PHP或您首選的服務器端語言的其他方法。
不,如果您希望在您的網站上添加圖片,您需要提供它的網址。
嘗試這樣:
首先,我們需要一個短期的服務器端腳本來反彈了我們的請求,因爲AJAX是由相同的起源政策阻礙。這裏有一些在PHP中:
<?php if (isset($_GET['url'])) readfile($_GET['url']); ?>
假設這是保存在get.php
。要使用它,我們只需將查詢字符串的url字段設置爲我們想要獲取的頁面的url。該腳本從該頁面獲取所有HTML並輸出。例如,get.php?url=http://stackoverflow.com/
將獲得stackoverfllow索引頁中的所有HTML。
接下來,讓我們寫一些jQuery來檢索url處指定圖片的src。像這樣:
var url = 'http://www.pics.com/';
var selector = '#pic8';
$.get('get.php', { url: url }, function(htmlResponse) {
var pic = $(htmlResponse).find(selector);
alert(pic.attr('src');
}, 'html');
這應該有效。
你可以嘗試http://easyxdm.net/wp/,但我不確定它是否適用於你的情況。 – newbie