2012-06-06 97 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