tag - jquery selector w3s




HTML Web Worker和Jquery Ajax調用 (4)

Node.JS中的執行環境也缺少本機DOM實現。 我認為Node.JS和HTML5 Web Workers共享某些限制是公平的。

有一些方法可以模擬DOM實現,以便在Node.JS中使用jQuery。 如果您仍想在Web Workers中使用jQuery,我認為您應該搜索Node.JS解決方案並查看它們是否適用。

我想知道我是否可以在web worker文件中使用jQuery。 谷歌瀏覽器給了我這個錯誤:“未捕獲的ReferenceError:$未定義”。

這是代碼:父文件:

var loader = new Worker(BASE_URL + "js/rss_loader_worker.js");
// Ask the worker to start loading the RSS from the server
loader.postMessage("loadRss");
// When receive the response from the server
loader.onmessage = function (event) {
  console.log(event.data);
}

工人檔案:

onmessage = function (event) {
  if (event.data === "loadRss") {
    loadRss();
  }
}

/**
 * This function handles the AJAX request to the server side
 * then pass the content to the view page
 * @param none
 * @return html text
 */
loadRss = function () {
  $.ajax({
    data: {city: CITY_LOCATION},
    url: BASE_URL + "/getfeeds",
    onsucess: function (data) {

    }
  });
}

請幫忙,謝謝:)


jQuery主要用於處理DOM和處理網頁。 因此,它不適合無法訪問DOM的Web Workers。

您可能希望使用實用程序庫而不是DOM庫,例如underscore.js ,或者可能有人應該創建一個jQuery Worker庫,一個沒有所有DOM操作功能的jQuery的簡化版本,只保留實用程序功能。


由於Web worker位於外部文件中,因此他們無權訪問以下JavaScript對象:

  • 窗口對象
  • 文檔對象
  • 父對象

所以你不能使用$ inside worker文件。 更好的是你可以使用像這樣的傳統AJAX

if (window.XMLHttpRequest)
{
  // code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
}
else
{
  // code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

參考http://www.w3schools.com/html/html5_webworkers.asp






web-worker