-3

我想知道,我怎样才能使用 Javascript 显示 HTML 内容,据我所知并一直在搜索它根本不可能做到这一点。

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

这里是:

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

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

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

4

3 回答 3

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 文档。

省略时,PHP 脚本会输出一个 JavScript frame=1。当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>";
}

请注意,我很快就一起输入了这个,所以它可能充满了错误。但它应该给你一个大致的想法。

于 2012-06-06T11:48:14.233 回答
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 标头”附加组件,您将看到服务器对第一个 url 的响应是Content-Type: text/javascript,第二个是Content-Type: text/html

于 2012-06-06T11:44:15.430 回答
0

我可能会想念你的观点,但它似乎是非常基本的 javscript。innerHTML 属性可用于操作例如 div 中包含的内容。例如

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

看看http://www.w3schools.com/js/default.asp,他们有一个活生生的例子。

于 2012-06-06T11:49:49.880 回答