2012-06-06 57 views
-3

我想知道,我如何使用JavaScript显示HTML内容,从我所知道的和一直在搜索它根本无法做到这一点。通过Javascript显示HTML内容

但是我找到了一个javascript代码,当URL参数中有frame时,它显示HTML内容(不是原始的)。

这就是:

http://otslist.eu/ratingWidget.js - 在这里你可以找到原始的JavaScript代码。

http://otslist.eu/ratingWidget.js?frame=1 - 这里是显示HTML。

这怎么可能?如何做这样的事情?

+0

难道你不能在这里粘贴代码 – 2012-06-06 11:38:21

+1

了解更多javascript ... –

+3

使用JavaScript无法显示HTML吗? JavaScript的主要用途之一是操作DOM - 即显示HTML。从JavaScript和DOM操作的基本指南开始。 –

回答

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>"; 
} 

注意,我很快就打字了一起,所以它可能是完全错误的。但它应该给你一个总的想法。

+0

我明白一切,但我只想看到代码本身,它是如何工作的(该js扩展文件被视为一个PHP文件)... – Rusco

+0

好吧,因为这不是太复杂,我赶紧键入一些例子代码如何做到这一点。 – Veger

+0

谢谢,但是我在问题中发布的脚本如何,扩展名是'.js'?您提供的代码不会在.js扩展名文件中执行。在这种情况下,他们有可能使用mod重写? – Rusco

0

如果你看看这两个页面的源代码,你会看到它是不同的代码。带有框架参数的页面是HTML,另一个是JS。因此,服务器查找框架参数,如果存在,则为JS页面提供HTML页面。

尝试

http://otslist.eu/ratingWidget.js?frames=1 

这里frame参数不存在(是帧与S),所以它服务的JS版本

,并尝试

http://otslist.eu/ratingWidget.js?frame=1515 

这里frame参数即使该值为1515也存在,因此它服务于HTML版本

此外,如果你用'活HTTP标头的附加的Firefox,你会看到,从服务器的第一URL的响应Content-Type: text/javascript和第二个是Content-Type: text/html

+0

我明白一切,但我只是想看到代码本身,它是如何工作的(该js扩展文件被视为一个PHP文件)... – Rusco

+0

你需要在otslist.eu的ftp访问来查看源代码 – pbaris

0

我可能会想念你在这里指出,但它似乎是非常基本的javscript。 innerHTML属性可用于处理例如一个div。例如

document.getElementById("changeMyContent").innerHTML='<strong>New</strong> content'; 

看看http://www.w3schools.com/js/default.asp,他们举办一个现场示例。

+0

我明白一切,但我只想看看代码本身,它是如何工作的(该js扩展文件被视为一个PHP文件)... – Rusco