簡體   English   中英

為iFrame設置用戶代理

[英]Setting a User Agent for an iFrame

我想將iFrame的用戶代理設置為iPhone。 我找到了這段代碼:

navigator.__defineGetter__('userAgent', function(){
return 'foo' // customized user agent
});

navigator.userAgent; // 'foo'

從這里開始

我想知道如何使用我的代碼插入這個:PHP / HTML:

<div class="holder">
<form action="page.php" method="post">
<label>
http://
</label>
<input type="text" name="url" value="<? echo $_POST['url']; ?>" />
<input type="submit" value="Anschauen" />
</form>
</div>
<div class="iphone">  
<iframe src="<? echo 'http://'. $_POST['url']; ?>"></iframe>
</div>

如果上面的腳本不起作用是否有可能使用AJAX或cURL,如果是,任何人都可以為我的代碼提供一個示例,因為我不知道如何編寫AJAX或cURL。

您無法從PHP端設置用戶代理字符串以影響iframe。 User Agent標頭是瀏覽器在每個請求上發送的客戶端標識符。 某些瀏覽器允許您手動修改它,但不允許您對單個幀進行修改。

您找到的解決方案可能沒用,因為它使用JavaScript來修改用戶代理字符串。 此修改的結果不會發送到返回iframe內容的服務器。


編輯

OP在評論中提到他想建立一個iframe來預覽“iPhone模式”中的網站。

你所看到的對你來說會有很多問題。 幾個原因:

  1. 沒有桌面瀏覽器能夠完美復制iOS瀏覽器行為。 iOS版本的Safari是Apple的自定義WebKit構建,並且(理論上)沒有其他瀏覽器,甚至WebKit構建器也會表現相同。 您必須考慮觸摸事件,Apple自己的調整,方向更改等。

  2. 如果您要使用iframe解決方案,則無法發送標識您在iframe中使用iPhone的標頭。 (有一個解決方法,請參閱下面的第2點。)

可以做些什么

  1. 現代網站,而不是嗅探用戶代理標題(瀏覽器標識符)只是響應和適應屏幕的寬度。 這對您有所幫助,因為這些網站不依賴於用戶代理標頭來識別瀏覽器,這樣的網站只會使設計適應iframe所具有的任何維度。 在你使用這個簡單的方法,你會得到類似這個iPhone 4瀏覽器模擬器的東西。

  2. 您可以使用xHR發出AJAX請求。 XHR允許你修改與請求發送, 應該讓你的頭改變User-Agent頭 我沒有測試過,所以我不知道是否允許在xHR中更改用戶Agnet,但它可能值得一試。
    然后返回響應,您可以將該輸出放在iframe中。 不幸的是,返回的內容中的鏈接很可能會被破壞,因為它們將不再附加到URL。 您必須擁有自己的腳本來瀏覽響應內容並修復鏈接。 理想情況下,您的腳本也必須截獲所有點擊,以便使用iPhone的用戶代理標頭發出另一個xHR請求。

正如您所看到的,有一種方法可以進行某種仿真(而不是模擬),但您必須依賴網站的響應能力或創建一個腳本來請求具有自定義用戶代理標頭的頁面(假設允許它) )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM