如何通过javascript将网站代码包含到iframe中?

时间:2015-04-19 11:23:11

标签: javascript php jquery html iframe

我使用php进行卷曲请求,响应是一个完整的网站,包括doctype,html部分等。

现在我想将此代码插入到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应显示在名为" Hotelbewertungen"的最下面部分。

感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

尝试做这样的事情时

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

我们不应在您的字符串文字中包含<script>...</script>标记。 HTML将捕获结束脚本标记并将其解释为有效标记。我以前见过这个问题,一个解决方案是&#34;分手&#34;脚本将字符串标记为&#34;&lt;&#34; +&#34; script&gt;&#34;和&#34;&lt;&#34; +&#34; / script&gt;&#34;在JavaScript中。

但是,更好的解决方案是在PHP端使用base64_encode(),然后在JavaScript端使用window.atob()(所有主流浏览器都使用supported)。这样可以防止标记干扰您的JavaScript。

PHP文件:

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

呈现HTML:

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

答案 1 :(得分:0)

为什么这么复杂?

您拥有要在iframe中显示的网站的网址,只需执行此操作:

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

或者你有一个特别的理由试图以这种非常复杂的方式做到这一点吗?

<强>更新: 如果你想摆脱滚动条css是你的朋友: http://jsfiddle.net/fnnuv8n2/