2015-04-19 82 views
0

我用php做了一個curl請求,響應是一個完整的網站,包括doctype,html部分等等。如何通過JavaScript將網站代碼包含到iframe中?

現在我想插入此代碼到iframe中。在我的opionion中,這隻能用javascript來完成。所以我從我的php代碼中迴應了javascript代碼。

現在我有問題的HTML代碼包含引號和換行符。引號被addslashes php函數掩蓋。我用preg_replace php函數替換了換行符。

但我總是得到一個錯誤「未終止的字符串文字」。您可以在此頁面看到錯誤,例如螢火蟲:

http://test.gute.reisen/hotel/details/reiseart/pauschalreise/datum_von/19.04.2015/datum_bis/20.05.2015/abflughafen/-1/abflughafen_code/-1/zielreg/Balearen/zielreg_code/567/anz_erw/2/anz_kind/0/hotelkat/0/reisedauer/-100/verpflart/Alle/zimmertyp/Alle/ref/h/page/1/maxpage/1/anzerg/10/hotelname/Galaxia/hotelcode/3274/sz/hb

iframe的應在所謂的 「酒店評論」 的最下部分顯示。

感謝您的任何建議。

+1

你爲什麼不只是捲曲的代碼和相同的PHP文件中的回聲嗎?然後,您可以將此PHP文件包含在iframe中,而不使用任何JavaScript。 – dsuckau

+0

好主意!這很簡單:-) – zuluk

+0

或使用PHP'file_get_contents'。 – SaidbakR

回答

1

當試圖做這樣的事情

... 
document.write("<!DOCTYPE html lang=\"de\"> ... </script></body></html>"); 

我們不應該包括在<script>...</script>標籤你的字符串文字。 HTML將捕獲結束腳本標記並將其解釋爲有效標記。我之前看到過這個問題,一種解決方案是在JavaScript中將腳本標記字符串「分解」爲類似「<」+「script>」和「<」+「/ script>」的字符串。

但是,更好的解決方案是在PHP端使用base64_encode(),然後在JavaScript端使用(所有主流瀏覽器都使用)。這將防止標記干擾您的JavaScript。

PHP文件:

.... 
document.write(window.atob("<?php echo base64_encode($cURLString);?>")); 

渲染HTML:

.... 
document.write(window.atob("2lkZSB0aGUgSmF2YVNjcmlwdC4NCg0KSG93ZXZlc 
    iwgYSBiZXR0ZXIgc3VnZ2VzdGlvbiBpcyB0byB1c2UgYmFzZTY0X2VuY2234nj234 
    9kZSgpIG9uIHRoZSBQSFAgc2lkZSwgdGhlbiB1c2UgYXRvYigpIG9uIHRoZSBKYX3 
    ZhU2NyaXB0IHNpZGUuIFRoaXMgd2lsbCBwcmV2ZW50IG1hcmt1cCBmcm9tIGludGV 
    aW5nIHdpdGggeW91ciBKYXZhU2NyaXB0Lg==")); 
+0

這似乎是我的問題的最佳答案。我明天再試。謝謝! – zuluk

+0

對於德國特殊字符,我必須使用:decodeURIComponent(escape(window.atob())) – zuluk

+0

啊,有趣。那麼,我很高興它爲你工作! – Drakes

0

爲什麼這麼複雜?

你知道該網址,你想在一個iframe來顯示網站,所以只是做:

<iframe src="<?php echo $url; ?>"></iframe> 

或者你有嘗試做它在這個非常複雜的方式特別的原因?

更新: 如果你想擺脫滾動條的CSS是你的朋友: http://jsfiddle.net/fnnuv8n2/

+0

對不起,我忘了說什麼。我不想在iframe中有垂直滾動條。所以iframe的高度必須由內容高度來設置。然而,這是一個外部頁面,所以相同的源策略會阻止使用javascript訪問iframe。所以你的解決方案對我來說是不可能的。 – zuluk

+0

如果你想擺脫滾動條,你不必使用JavaScript來實現。我更新了我的答案並添加了一個jsfiddle –

+0

這只是一半的事實。在你的小提琴內容是不完全可見的,這不是我的目標。 iframe的高度應隨其內容而增長。 – zuluk

相關問題