HTML script 元素
<script> 標(biāo)簽用于定義客戶端腳本,比如 JavaScript。
script 元素既可包含腳本語(yǔ)句,也可通過(guò) src 屬性指向外部腳本文件。
必需的 type 屬性規(guī)定腳本的 MIME 類型。
JavaScript 最常用于圖片操作、表單驗(yàn)證以及內(nèi)容動(dòng)態(tài)更新。
下面的腳本會(huì)向?yàn)g覽器輸出“Hello World!”:
<script type="text/javascript"> document.write("Hello 天華信息教育!") </script>
<noscript> 標(biāo)簽
<noscript> 標(biāo)簽提供無(wú)法使用腳本時(shí)的替代內(nèi)容,比方在瀏覽器禁用腳本時(shí),或?yàn)g覽器不支持客戶端腳本時(shí)。
noscript 元素可包含普通 HTML 頁(yè)面的 body 元素中能夠找到的所有元素。
只有在瀏覽器不支持腳本或者禁用腳本時(shí),才會(huì)顯示 noscript 元素中的內(nèi)容:
<script type="text/javascript"> document.write("Hello 天華信息教育!") </script> <noscript>Your browser does not support JavaScript!</noscript>
實(shí)例
如何將腳本插入 HTML 文檔。
<html> <body> <script type="text/javascript" > document.write("<h1>Hello 天華信息教育!</h1>") </script> </body> </html>
HTML基礎(chǔ)教程:腳本
如何應(yīng)對(duì)不支持腳本或禁用腳本的瀏覽器。
<html> <body> <script type="text/javascript"> document.write("Hello 天華信息教育!") </script> <noscript>Sorry, your browser does not support JavaScript!</noscript> <p>不支持 JavaScript 的瀏覽器將顯示 noscript 元素中的文本。</p> </body> </html>
HTML基礎(chǔ)教程:腳本
希望以上可以解決你們心中的一些疑惑,其中可能會(huì)有不對(duì)的地方或是需要改進(jìn)的地方,歡迎留言糾正。感覺(jué)還不錯(cuò)歡迎關(guān)注收藏轉(zhuǎn)載哦
載腳本長(zhǎng)期以來(lái)一直是互聯(lián)網(wǎng)可用性的重要組成部分。一般都是在服務(wù)端來(lái)實(shí)現(xiàn)的居多,隨著技術(shù)的發(fā)展,前后端分離技術(shù)的興起,以前很多后端的事也更多讓前端來(lái)實(shí)現(xiàn),我開(kāi)始尋找一種無(wú)需服務(wù)器就可以強(qiáng)制下載的方法,經(jīng)過(guò)一番努力,終于我找到了它,就在Firefox Devols Debugger中,有興趣的朋友可以自己去試一下!
后端的活我也能干了
廢話不多說(shuō),直接上腳本。
1、javascript腳本
function downloadFile(data, fileName, type="text/plain") { // 創(chuàng)建不可見(jiàn)的元素 const a = document.createElement("a"); a.style.display = "none"; document.body.appendChild(a); // 將href設(shè)置為要下載數(shù)據(jù)的blob表示形式 a.href = window.URL.createObjectURL( new Blob([data], { type }) ); // 使用下載屬性設(shè)置所需的文件名 a.setAttribute("download", fileName); // 通過(guò)模擬點(diǎn)擊觸發(fā)下載 a.click(); // 清理 window.URL.revokeObjectURL(a.href); document.body.removeChild(a); }
2、html元素
<form onsubmit="onFormSubmit(); return false;"> <p> <label for="demo_filename">文件名稱:</label><br> <input type="text" id="demo_filename"> </p> <p> <label for="demo_content">內(nèi)容:</label><br> <textarea id="demo_content"></textarea> </p> <button type="submit">下載</button> </form>
3、運(yùn)行效果
是不是很簡(jiǎn)單,這樣做的函數(shù)非常小,并且依賴于URL.createObjectUrl,函數(shù)注入<a>元素,將其設(shè)置為Blob值設(shè)置為目標(biāo)文件的文本內(nèi)容,并單擊下載按鈕以觸發(fā)下載。元素在過(guò)程中保持隱藏狀態(tài),并在click()調(diào)用,一旦函數(shù)被調(diào)用,瀏覽器的下載提示就會(huì)顯示出來(lái),createObjectURL和Blob這兩種技術(shù)才是真正的魔力!
后端工程師表示可以早點(diǎn)下班了
我們都知道Python可以很輕松地實(shí)現(xiàn)某些功能,而且還可以編寫網(wǎng)頁(yè),比如Remi,Pysimplegui,但是操作JavaScript這種瀏覽器的腳本語(yǔ)言,還是第一次聽(tīng)說(shuō),小編也是第一次聽(tīng)說(shuō),于是就跟大家腦補(bǔ)這一知識(shí)。
是一個(gè)可以執(zhí)行JavaScript腳本的Python模塊,可以與網(wǎng)頁(yè)上的JavaScript進(jìn)行交互,這樣就能更加精準(zhǔn)地獲取到網(wǎng)頁(yè)中的加密內(nèi)容,如果用Python中的網(wǎng)絡(luò)模塊進(jìn)行請(qǐng)求,會(huì)無(wú)法解密文檔中的加密內(nèi)容,這個(gè)時(shí)候使用我們的PyExecJS可以很方便到的解密網(wǎng)頁(yè)中的加密內(nèi)容,當(dāng)然這得你會(huì)Js逆向才可以。不過(guò)要想PyExecJS解析JS語(yǔ)句沒(méi)毛病,還得整個(gè)Js語(yǔ)言解析環(huán)境,這里推薦NodeJS,尷尬。我們來(lái)看下PyExecJs的用法:
import execjs
aa=execjs.eval("'one|two|three'.split('|')") #執(zhí)行JavaScript代碼,將字符串分割形成數(shù)組
print(aa)
e=execjs.compile(''' #編譯一個(gè)表達(dá)式
function add(x,y){
return x+y;
}
''')
print(e.call('add',10,20))#調(diào)用編譯好的函數(shù)并且賦值
也可以通過(guò)獲取引擎來(lái)運(yùn)行我們的語(yǔ)句,如下:
print(execjs.get().eval('1+1'))
print(execjs.get().name)
這里JavaScript的解釋引擎是JScript,我們還可以使用自己指定給力的引擎,比如“Nodejs”。
import execjs
import os
os.environ["EXECJS_RUNTIME"] = "Node"
print(execjs.get().name)
也可以手動(dòng)指定引擎,如下:
js1=execjs.get(execjs.runtime_names.JScript)
print(js1.eval('1'))
js2=execjs.get(execjs.runtime_names.Node)
print(js2.eval('2'))
這個(gè)我覺(jué)得算是比較好的了,可以說(shuō)是一個(gè)綜合體,它不需要依賴別的環(huán)境,可以獨(dú)立運(yùn)行Js文件,只不過(guò)它的運(yùn)行速度可能會(huì)稍微慢一點(diǎn)而已,但是這都不叫事。下面我們來(lái)看看它有哪些神器的功能吧。
import js2py
aa=js2py.eval_js(
'''
var i=0;
for(var c=1;c<6;c++){
console.log(c);
}
'''
)
print(aa)
我們可以把JS文件寫入文件中,以便我們進(jìn)行調(diào)用,如下:
1.js
function f(aa){
if(aa>11){
console.log('OK')
}else{
console.log('Fail')
}
}
Python文件
import js2py
with open('1.js','r') as f:
aa=js2py.eval_js(f.read())
print(aa(11))
這里我們以淘寶為主,我想整它的JS腳本文件,如下:
import execjs
import requests
import re
url = 'https://ai.taobao.com/?pid=mm_26632323_6762370_25910879'
res=requests.get(url).text
js=re.findall(r'<script>(.*?)</script>',res)
print(js,'\n')
js1=re.sub(r'eval\(','return(',js[0])
html="function getLego2WPK(){" + js1 + "};"
ctx = execjs.compile(html)
temp = ctx.call('getLego2WPK')
print(temp)
基于Google的V8引擎打造,遺憾的是目前只支持Python2版本,而且已不再維護(hù),建議Python2的小伙伴可以去試試。
本文主要盤點(diǎn)了3個(gè)可以操作JavaScript的Python庫(kù),分別是PyExecJS、Js2Py和PyV8,只要我們用好了這些模塊以后玩爬蟲就能更加技高一籌,并且準(zhǔn)確率更高了。
------------------- End -------------------
看到下面的資料了嗎,我還有很多哦!快來(lái)私信我領(lǐng)取吧!
帶你從Python入門到就業(yè)!錯(cuò)過(guò)就莫得啦!
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。