我剛剛遇到一個重要問題,因爲我有很多來自另一個域的來源,這意味着如果我使用iframe,我必須調整所有這些內容。但問題是我無法修改或插入代碼來源網頁。 因爲這些,我想問問是否有其他解決方案可以跳過使用iframe? 提示:我需要url中的全部內容(包括圖片,CSS等)。不是內容的一部分。有沒有什麼方法可以替代iframe?
回答
PHP的include功能可能是最好的開始。它只是您無法更改的標記,還是您能夠使用PHP和JavaScript?
編輯:
使用include('http://www.google.com')
包括在你的頁面的URL,而不使用iframe嘗試。代碼中的任何非絕對目錄引用(如<img src='/img.png'>
將不會顯示或加載正確。
如果您需要修復這些引用並且無法更改標記本身,則可以使用file_get_contents
函數並修改這樣的事情:
$page = file_get_contents('http://www.google.com');
$page = preg_replace('/(href|src)=([\'"])\//',"$1=$2http://google.com/",$page);
echo $page;
感謝您的意見,我無法調整內容iframe,因爲它來自另一個域,最重要的是我無法修改源頁面,所以我想替換iframe,可以給我更多的信息或者像一些示例代碼謝謝 – xiaohang 2011-05-08 10:03:30
順便說一下,它不是一個PHP文件,它是一個特定的網址,例如http://www.google.com – xiaohang 2011-05-08 10:11:53
您可以使用PHP的包含函數包含網址,嘗試'include「http://www.google.com」;'。如果它不起作用,您可能需要修改您的php.ini文件的'allow_url_include'變量。 如果您需要修改URL中顯示的頁面內容,可以使用PHP的[file_get_contents](http:// php.net/manual/en/function.file-get-contents.php)功能打開並修改返回的數據。 – 2011-05-10 00:11:34
使用JSONP數據類型進行AJAX調用以返回另一頁的內容。您需要對兩個域上的代碼進行修改才能完成此工作。 http://en.wikipedia.org/wiki/JSONP
謝謝。問題是我無法修改源域中的代碼... – xiaohang 2011-05-08 10:05:02
的jQuery加載到一個div http://api.jquery.com/load/
修改@beanland的答案,我/proxy.php文件,用緩存:
$host = parse_url($_GET['url'], PHP_URL_HOST);
$dir = $_SERVER[DOCUMENT_ROOT].'/cache_proxy/'.$host;
if(!is_dir($dir))
mkdir($dir);
$filepath = $dir.'/'.md5($_GET['url']);
if(is_file($filepath)){
include($filepath);
}else{
$page = file_get_contents($_GET['url']);
$page = preg_replace('/(a href)=[\'\"](http.*)[\'\"]/', '$1="http://buy/proxy.php?url=$2"', $page);
$page = preg_replace('/(a href)=[\'"][^http](.*)[\'"]/', '$1="http://buy/proxy.php?url=http://'.$host.'/$2"', $page);
$page = preg_replace('/(href|src)=[\'"][^http+](.*)[\'"]/', '$1="http://'.$host.'/$2"', $page);
file_put_contents($filepath, $page);
echo $page;
}
首先更換所有<a href="">
鏈接到你的代理,然後將所有相關的<img src="/path...">
等全部替換爲絕對<img src="http://...">
- 1. 有什麼方法可以替代Response.Write?
- 2. 有沒有什麼方法可以縮短這個代碼呢?
- 3. 在winsock2下,有什麼替代方法可以選擇()?
- 4. 有沒有什麼方法可以使用'unset'作爲方法?
- 5. 棄用com.apple.eawt.ApplicationListener的替代方法有什麼替代方法
- 6. wmctrl有什麼替代方法?
- 7. Play.application有什麼替代方法()
- 8. MonoDroid的Windows.ApplicationModel.Resources.ResourceLoader有什麼替代方法?
- 9. 使用global.asax有什麼替代方法?
- 10. document.write有什麼替代方法?
- 11. 使用phpMyAdmin有什麼替代方法?
- 12. 有沒有什麼辦法可以編寫簡潔的代碼?
- 13. 有沒有什麼辦法可以優化這段代碼?
- 14. 有沒有替代IE的replaceAdjacentText方法?
- 15. 有沒有startActivity()的替代方法?
- 16. TextView有沒有其他替代方法?
- 17. 有沒有什麼方法可以重用java 8中的Stream?
- 18. 有沒有什麼方法可以在Harp.js中使用Jade塊?
- 19. 有沒有什麼可以嚴格的在Laravel的方法?
- 20. 有沒有什麼方法可以在html中查看文件?
- 21. 有沒有什麼方法可以去除這種水印?
- 22. 有沒有什麼方法可以定義javascript模式
- 23. 有沒有什麼方法可以在Windows中模擬LD_LIBRARY_PATH?
- 24. 有沒有什麼方法可以查詢bean的spring容器
- 25. 有沒有什麼方法可以在JavaScript中凍結document.body.innerHTML?
- 26. 有沒有什麼方法可以在運行時編譯C++代碼?
- 27. 替代方法沒有源代碼
- 28. 什麼是iFrame的替代方案?
- 29. 還有什麼替代方法可用於+ [LSApplicationWorkspace defaultWorkspace]和-allApplications?
- 30. 查詢時有什麼方法可以替換列值嗎?
我希望其他域可以使用那裏的數據。 – epascarello 2011-05-07 22:33:00
是的。我不是一個黑客((::我討厭客戶,因爲他們不希望我修改他們的代碼,但如果真的不可能,我會與他們談判 – xiaohang 2011-05-08 10:09:01