簡體   English   中英

從不同的地方訪問 JS 變量<script> block

[英]Accessing a JS variable from a different <script> block

我需要訪問在 html 頁面的一個塊中聲明的 js 變量到同一 html 頁面的另一個塊中,這樣我就可以停止正在進行的 ajax 調用,但我不知道如何訪問一個變量聲明到另一個塊中。 我無法合並這兩個塊,其他一切都在桌子上。

<script>
    $(function() {
      var term = new Terminal('#input-line .cmdline', '#container output');
      term.init();
    });
</script>
<script>
       term.ajaxHandler.abort();//but how can I access the variable term from the block above,this will be inside a button later
</script>

提前致謝

根據您的代碼示例的描述方式,無法重用該變量。 因為沒有綁定window對象,所以綁定了自執行的函數。 這是庫不干預您自己的代碼的“安全”方式的一個示例。

但是,由於我猜測它是 jQuery 的語法,因此您可以掛鈎 jQuery ajax 處理。 根據您的要求,要停止 ajax 調用,您需要監聽所有 ajax 請求。

您可以查看 jQuery ajax 掛鈎, https://api.jquery.com/category/ajax/

你可能會得到類似的結果:

$(document).ajaxSend(function(event, xhr, settings){
   if (settings.url === "/your/url/to/abort") {
      xhr.abort();
   }
});

只需在函數聲明上方聲明 var term

 var term function test1(){ term = 'hello there' test2() } function test2(){ console.log(term) } test1()

好的,我設法解決了,基本上我創建了一個函數只是為了中止這樣的ajax請求:

  this.abortAjax = () => {
     requestHandler.abort();
  }

然后使用預先實例化的 term 對象在 terminal.js 本身中訪問它。 在處理完代碼后,我能夠將所有內容保留在終端腳本中,而不是分成兩部分,得到如下內容:

   function ShowLoadingScreen () {
   var customElement = $("<div>", {
    "class" : "btn btn-danger btn-lg",
    "text"  : "Abort",
    "onclick": "term.abortAjax()"
   });

      $.LoadingOverlay("show", {
       //image       : "/static/loading.gif",
       background              : "rgba(204, 187, 0, 0.8)",
       imageAnimation          : "rotate_right",
       //imageAutoResize         : true,
       text        : "Loading...",
       custom      : customElement
       });
   }

   function request (command) {
   ...
   requestHandler = $.ajax({
      url: _url,
      beforeSend: function () { ShowLoadingScreen(); }, // <Show OverLay      
      type: 'GET',
      dataType: 'json',
      success: function (response) {
         ...
      },
      complete: function () { HideLoadingScreen(); } //<Hide Overlay
   }).fail(function (jqXHR, textStatus, error) {
       ...
   });
   ShowLoadingScreen();
   }

謝謝大家。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM