Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 视频一区国产精品,欧美成人在线免费视频,久久亚洲精品成人综合

          整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢(xún)熱線:

          JavaScript代碼嵌入HTML的方法、及兩者的在執(zhí)行流程上的細(xì)微區(qū)別

          了執(zhí)行Javascript,需要在HTML文件內(nèi)以特定的方式書(shū)寫(xiě)JavaScript的代碼,JavaScript的書(shū)寫(xiě)方法有多種,其執(zhí)行的流程也各不相同:

          1 <script>標(biāo)簽嵌入

          此種嵌入方法無(wú)法操作<script>之后的DOM元素。因?yàn)?lt;script>之后的DOM元素還未構(gòu)造,因此在<script>標(biāo)簽內(nèi)就無(wú)法取得位于其后的DOM元素。

          2 讀取外部JavaScript文件

          此種嵌入方法可以指定defer、async屬性。defer可以推遲執(zhí)行,async可以異步執(zhí)行。

          3 onload嵌入

          此種嵌入方法在頁(yè)面讀取完后再對(duì)其執(zhí)行,所以可以對(duì)所有的DOM元素操作。

          <body onload="alert('hello')">
          window.onload = function(){alert('hello');};

          當(dāng)window.onload事件觸發(fā)時(shí),頁(yè)面上所有的DOM、樣式表、腳本、圖片、flash都已經(jīng)加載完成了。

          //window.onload不能同時(shí)編寫(xiě)多個(gè)。
          //以下代碼無(wú)法正確執(zhí)行,結(jié)果只輸出第二個(gè)。
          window.onload = function(){
            alert("test1");
          };
          
          window.onload = function(){
            alert("test2");
          };
          
          //$(document).ready()能同時(shí)編寫(xiě)多個(gè)
          //結(jié)果兩次都輸出
          $(document).ready(function(){ 
             alert("Hello World"); 
          }); 
          $(document).ready(function(){ 
             alert("Hello again"); 
          }); 

          window.onload和body中onload也有些許區(qū)別:

          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
              <title></title>
              <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.js"></script>
              <script language="javascript">
                  window.onload = haha;
                  function haha(){console.log("window.onload");}
          
                  if(document.addEventListener){
                      function DOMContentLoaded(){
                          console.log("DOMContentLoaded");
                      }
                      document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
                  }</script>
          </head>
          <body onload="console.log('bodyonload');">
                  <div id="div1">a</div>
          </body>
          </html>

          在IE10和FireFox下,結(jié)果為 :

          "DOMContentLoaded"
          "bodyonload"

          說(shuō)明body中的onload會(huì)覆蓋window.onload

          在chrome下,結(jié)果為:

          DOMContentLoaded
          window.onload
          bodyonload

          然后,如果把javascript代碼移到最下面,結(jié)果又會(huì)是什么樣呢?

          chrome和IE10、FireFox的結(jié)果竟然是一樣的:

          DOMContentLoaded
          window.onload

          IE 10、Fire Fox可以理解,window.on load和body中的 on load 誰(shuí)在下面就是誰(shuí)覆蓋誰(shuí),只會(huì)執(zhí)行后面的那個(gè)。

          4 DOM ContentLoaded嵌入

          onload方法可能需要等待時(shí)間,而本方法可以在完成HTML解析后發(fā)生的事件,減少等待時(shí)間。

          在chrome、IE10和FireFox中,執(zhí)行結(jié)果是:DOMContentLoaded然后才是onload的輸出。所以說(shuō)一般情況下,DOMContentLoaded事件要在window.onload之前執(zhí)行,當(dāng)DOM樹(shù)構(gòu)建完成的時(shí)候就會(huì)執(zhí)行DOMContentLoaded事件。

          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
              <title></title>
              <script type="text/javascript" src="jquery2.js"></script>
              <script language="javascript">
                  window.onload = haha;
                  function haha(){console.log(document.getElementById("div1"));}
                  if(document.addEventListener){
                      function DOMContentLoaded(){
                          console.log("DOMContentLoaded");
                      }
                      document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
                  }
              </script>
          </head>
          <body>
              <div id="div1">a</div>
          </body>
          </html>

          如果你是個(gè)jQuery使用者,你可能會(huì)經(jīng)常使用$(document).ready();或者$(function(){}),這都是使用了DOMContentLoaded事件

          5 動(dòng)態(tài)載入JavaScript文件

          5.1 使用原生js方法

          動(dòng)態(tài)創(chuàng)建script標(biāo)簽,并指定script的src屬性

          function loadJs(url, callback) {
              var script = document.createElement('script');
              script.type = "text/javascript";
              if (typeof(callback) != "undefined") {
                  if (script.readyState) {
                      script.onreadystatechange = function() {
                          if (script.readyState == "loaded" || script.readyState == "complete") {
                              script.onreadystatechange = null;
                              callback();
                          }
                      }
                  } else {
                      script.onload = function() {
                          callback();
                      }
                  }
              }
              script.src = url;
              document.body.appendChild(script);
          }
          loadJs("test.js", function() {
              alert('done');
          });

          還可以使用同樣的原理動(dòng)態(tài)加載css文件,只不過(guò)插入的的父節(jié)點(diǎn)是head標(biāo)簽。

          5.2 使用document.write/writeln()方式

          該種方式可以實(shí)現(xiàn)js文件的動(dòng)態(tài)加載,原理就是在重寫(xiě)文檔流,這種方式會(huì)導(dǎo)致整個(gè)頁(yè)面重繪。

          document.writeln("<script src=\"http://lib.sinaapp.com/js/jquery/1.6/jquery.min.js\"></script>");

          需要注意的是特殊字符的轉(zhuǎn)義。

          5.3 使用jQuery

          使用getScript(url,callback)方法實(shí)現(xiàn)動(dòng)態(tài)加載js文件

          $.getScript('test.js',function(){
              alert('done');
          });

          -End-

          ython 程序可以執(zhí)行 JavaScript 代碼。實(shí)現(xiàn)這一點(diǎn)的常見(jiàn)方法包括使用以下幾種工具或庫(kù):


          1. **PyExecJS**:

          - `PyExecJS` 是一個(gè)可以在 Python 中執(zhí)行 JavaScript 代碼的庫(kù)。它支持多種 JavaScript 運(yùn)行時(shí)環(huán)境,包括 Node.js、PhantomJS 和 JScript。


          2. **PyMiniRacer**:

          - `PyMiniRacer` 是一個(gè) Python 包裝器,用于在 V8 引擎上執(zhí)行 JavaScript 代碼。它非常輕量,適合需要快速執(zhí)行簡(jiǎn)單 JavaScript 代碼的場(chǎng)景。


          3. **Node.js 子進(jìn)程**:

          - 可以使用 Python 的 `subprocess` 模塊來(lái)啟動(dòng)一個(gè) Node.js 進(jìn)程,并在其中執(zhí)行 JavaScript 代碼。


          以下是使用這三種方法的示例:


          ### 使用 PyExecJS


          首先,安裝 `PyExecJS`:


          ```sh

          pip install PyExecJS

          ```


          然后,可以在 Python 中執(zhí)行 JavaScript 代碼:


          ```python

          import execjs


          # JavaScript 代碼

          js_code = """

          function add(a, b) {

          return a + b;

          }

          """


          # 編譯并執(zhí)行 JavaScript 代碼

          ctx = execjs.compile(js_code)

          result = ctx.call("add", 1, 2)

          print(result) # 輸出:3

          ```


          ### 使用 PyMiniRacer


          首先,安裝 `PyMiniRacer`:


          ```sh

          pip install py_mini_racer

          ```


          然后,可以在 Python 中執(zhí)行 JavaScript 代碼:


          ```python

          from py_mini_racer import py_mini_racer


          # 創(chuàng)建一個(gè) V8 引擎實(shí)例

          ctx = py_mini_racer.MiniRacer()


          # 執(zhí)行 JavaScript 代碼

          result = ctx.execute("function add(a, b) { return a + b; } add(1, 2);")

          print(result) # 輸出:3

          ```


          ### 使用 Node.js 子進(jìn)程


          首先,確保安裝了 Node.js,然后在 Python 中使用 `subprocess` 模塊:


          ```python

          import subprocess

          import json


          # JavaScript 代碼

          js_code = """

          function add(a, b) {

          return a + b;

          }

          console.log(JSON.stringify(add(1, 2)));

          """


          # 創(chuàng)建一個(gè) Node.js 子進(jìn)程

          process = subprocess.Popen(

          ['node', '-e', js_code],

          stdout=subprocess.PIPE,

          stderr=subprocess.PIPE

          )


          stdout, stderr = process.communicate()


          if process.returncode == 0:

          result = json.loads(stdout)

          print(result) # 輸出:3

          else:

          print("Error:", stderr.decode())

          ```


          總結(jié)一下,雖然 Python 本身不直接支持執(zhí)行 JavaScript 代碼,但通過(guò)使用上述庫(kù)和方法,可以輕松地在 Python 程序中執(zhí)行 JavaScript 代碼。選擇哪種方法取決于你的具體需求和使用場(chǎng)景。

          avaScript 程序不能獨(dú)立運(yùn)行,它需要被嵌入 HTML 中,然后瀏覽器才能執(zhí)行 JavaScript 代碼。通過(guò) <script> 標(biāo)簽將 JavaScript 代碼引入到 HTML 中,有兩種方式:
          1.內(nèi)部方式
          內(nèi)部方式是通過(guò)<script>標(biāo)簽包裹JavaScript代碼,從而引入HTML頁(yè)面中,示例代碼如下:

          <!DOCTYPE html>
           <html>
           <head>
             <meta charset="UTF-8">
             <title>JavaScript 基礎(chǔ) - 引入方式</title>
           </head>
           <body>
             <!-- 內(nèi)聯(lián)形式:通過(guò) script 標(biāo)簽包裹 JavaScript 代碼 -->
             <script>
               alert('嗨,歡迎來(lái)傳智播學(xué)習(xí)前端技術(shù)!')
             </script>
           </body>
           </html>

          2.外部形式

          一般將 JavaScript 代碼寫(xiě)在獨(dú)立的以 .js 結(jié)尾的文件中,然后通過(guò) <script>標(biāo)簽的 <src>屬性引入,示例代碼如下:

          // demo.js
          document.write('嗨,歡迎來(lái)傳智播學(xué)習(xí)前端技術(shù)!')
          <!DOCTYPE html>
           <html>
           <head>
             <meta charset="UTF-8">
             <title>JavaScript 基礎(chǔ) - 引入方式</title>
           </head>
           <body>
             <!-- 外部形式:通過(guò) script 的 src 屬性引入獨(dú)立的 .js 文件 -->
             <script src="demo.js"></script>
           </body>
           </html>

          注意:如果 script 標(biāo)簽使用 src 屬性引入了某 .js 文件,那么 標(biāo)簽的代碼會(huì)被忽略!!!如下代碼所示:


          主站蜘蛛池模板: 亚洲电影唐人社一区二区| 97久久精品无码一区二区| 国产一区二区视频在线观看| 亚洲一区二区观看播放| 精品无码成人片一区二区98| 国产精品视频一区二区猎奇| 无码日本电影一区二区网站| 日本一区二区三区免费高清| 女同一区二区在线观看| 精品免费AV一区二区三区| 内射一区二区精品视频在线观看| 四虎精品亚洲一区二区三区| 一区二区乱子伦在线播放| 色狠狠一区二区三区香蕉| 亚洲欧美日韩一区二区三区| 日本美女一区二区三区| 免费一区二区三区| 天天综合色一区二区三区| 男人免费视频一区二区在线观看| 无人码一区二区三区视频| 一区二区视频在线| 国产萌白酱在线一区二区| 国产一区二区免费| 精品一区狼人国产在线| 中文字幕精品亚洲无线码一区 | 亚洲Av高清一区二区三区| 无码中文人妻在线一区| 中文字幕一区视频一线| 亚洲一区AV无码少妇电影| 精品国产一区二区三区2021| 大香伊人久久精品一区二区| 国产精品一区在线观看你懂的| 精品视频一区二区三三区四区 | 无码AⅤ精品一区二区三区| 日韩电影一区二区三区| 精品人妻一区二区三区四区在线| 亚洲不卡av不卡一区二区| 麻豆视频一区二区三区| 国产99久久精品一区二区| 中文字幕精品亚洲无线码一区| 国偷自产视频一区二区久|