-3

Javascript を使用して HTML コンテンツを表示するにはどうすればよいのでしょうか。

しかしframe、URL パラメータに HTML コンテンツ (生ではない) が表示されている JavaScript コードを見つけました。

ここにあります:

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 スクリプトは JavaScript を出力しますframe=1。が含まれている場合frame=1、JavaScript を HTML ページに埋め込んでそれを提供するように PHP スクリプトに指示します。

更新: 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

ここであなたの指摘を見逃しているかもしれませんが、それはかなり基本的なjavscriptのようです。innerHTML-property は、div などに含まれるものを操作するために使用できます。例えば

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

http://www.w3schools.com/js/default.aspをご覧ください。実際の例がホストされています。

于 2012-06-06T11:49:49.880 に答える
0

両方のページのソース コードを見ると、別のコードであることがわかります。frame パラメータのあるページは HTML で、もう 1 つは JS です。したがって、サーバーはフレーム パラメータを探し、存在する場合は 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、2 番目の URL に対するサーバーからの応答がContent-Type: text/html

于 2012-06-06T11:44:15.430 に答える