我想知道,我如何使用Javascript显示HTML内容,据我所知并一直在搜索它是根本无法做到的。
但是我找到了一个javascript代码,当URL参数中有frame
时,它会显示HTML内容(非原始内容)。
这是:
http://otslist.eu/ratingWidget.js - 您可以在这里找到原始的javascript代码。
http://otslist.eu/ratingWidget.js?frame=1 - 这里显示的是HTML。
怎么可能?怎么做那样的事?
答案 0 :(得分:1)
您看到的JavaScript是服务器上的PHP脚本。使用一些浏览器/网络调试工具来检查HTTP响应:
HTTP/1.1 200 OK
Server nginx/0.7.67
Date Wed, 06 Jun 2012 11:50:44 GMT
Content-Type text/html
Connection keep-alive
X-Powered-By PHP/5.3.10
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma no-cache
Content-Encoding gzip
并看到它是由PHP提供的。所以它是PHP脚本的输出而不是常规的JavaScript文档。
当省略frame=1
时,PHP脚本输出JavScript。
当包含frame=1
时,它会告诉PHP脚本将JavaScript嵌入到HTML页面中并提供它。
更新: PHP脚本可能如下所示:
<?php
$asHTML = $_GET['frame'] == 1;
if($asHTML) {
// Generate HTTP headers for HTML, like
header("Content-Type", "text/html");
} else {
// Generate HTTP headers for the JavaScript, like
header("Content-Type", "text/javascript");
}
if($asHTML) {
// Generate HTML top document part
echo "<html><head><title>Title</title></head><body><script type=\"text/javascript\">";
// Other HTML header stuff here as well, see the live example (as I am too lazy to type it here)
}
// Read the JavaScript from a file that is available on the server
readfile("javascript.js");
if($asHTML) {
// Close HTML tags
echo "</script></body></html>";
}
请注意,我很快就将其打包在一起,因此可能充满了错误。但它应该给你一般的想法。
答案 1 :(得分:0)
如果你查看两个页面的源代码,你会发现它是不同的代码。带有frame参数的页面是HTML,另一个是JS。因此,服务器查找frame参数,如果存在则为HTML页面提供JS页面。
尝试
http://otslist.eu/ratingWidget.js?frames=1
此处frame
参数不存在(是带有s的帧),因此它提供JS版本
并尝试
http://otslist.eu/ratingWidget.js?frame=1515
此处frame
参数存在,即使该值为1515,因此它提供HTML版本
如果您使用Firefox的“实时HTTP标头”附加组件,您会看到服务器对第一个网址的响应为Content-Type: text/javascript
,而第二个网址的响应为Content-Type: text/html
答案 2 :(得分:0)
我可能会想念你,但这似乎是非常基本的javscript。 innerHTML属性可用于操纵例如包含在内的内容。一个div。例如
document.getElementById("changeMyContent").innerHTML='<strong>New</strong> content';
看看http://www.w3schools.com/js/default.asp,他们举办了一个实例。