2017-12-10 7 views
0

SocketでPython 3を使用する。Python WebサーバーでJavascriptをHTMLにリンクする

私は、HTMLファイルへのJavaScriptファイルをリンクできません。私は、同じディレクトリに、特に以下の3つのファイルがあります。

webserver.py

import socket 

def getTextFromFile(filename): 
    with open(filename, 'r') as myFile: 
     return myFile.read() 

host, port = '192.168.0.7', 11010 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
s.bind((host, port)) 
s.listen(1) 

print('Now serving: ' + host + ' at: ' + str(port)) 

while True: 
    try: 
     c, addr = s.accept() 
     print('Received connection form: ' + str(addr)) 
     request = c.recv(1024) 
     response = '\HTTP/1.1 200 OK' + getTextFromFile("index.html") 
     c.sendall(response.encode()) 
     c.close() 
    except Exception as e: 
     print(e) 

index.htmlを

<html> 
<head> 
<title>Title</title> 
<script src="indexjs.js"></script> 
</head> 
<body> 

<h1>Hello there.</h1> 
<p>This is a webserver test.</p> 

<button type="button" onclick="myFunction()">Click me!</button> 
<p id="demo"></p> 

</body> 
</html> 

indexjs.js

function myFunction(){ 
    document.getElementById("demo").innerHTML = "Hello"; 
} 

Webサーバーのコード自体は正常に動作し、ルーターはポート転送され、まったく別のネットワークからアクセスできます。しかし、ウェブサイトが訪問されると、javascriptは実行されないように見えます。 index.htmlのscriptタグの中に同じjavascriptコードを置き、indexjs.jsを省略すると、意図したとおりに動作します。 indexjs.jsがjavascriptコードをスクリプトタグに入れずにindex.htmlと正しくリンクできるようにするにはどうすればよいですか?

また、imgタグを使ってindex.html(pngファイル、index.htmlと同じディレクトリ)に画像を置くことで同様のアプローチを試みましたが、どちらも表示されなかったので、私のようですコードは、すべてのファイルをindex.htmlにリンクする際に問題があります。私が取っている

手順:

ランは私のパブリックIP xxx.xxxに

オープンブラウザ(私の場合には、クロムであることを起こる)

タイプをwebserver.py。 xxx.xxx:11010を入力してEnterを押す

ウェブページは表示されますが、写真は表示されません(リンクされている他のアセット)。また、ボタンが押されたときなどにJavaScript機能は実行されません。

すべてのヘルプは、事前に感謝をいただければ幸いです。

答えて

0

通常、あなたの静的な資産のパブリックフォルダを持っているでしょう。そして、静的なCSSとjsファイルをその中に入れます。

+0

これらはすべて同じディレクトリにあります。私の知る限りでは、これは通常許可され、うまくいくはずですが、なんらかの理由で動作しません。 – user9048141

関連する問題