41

Webワーカーファイル内でjQueryを使用できるかどうか疑問に思っています。Google Chromeで、「Uncaught ReferenceError:$isnotdefined」というエラーが表示されます。

コードは次のとおりです。親ファイル:

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) {

    }
  });
}

助けてください、ありがとう:)

4

6 に答える 6

39

いいえ、できません。スレッドセーフでないコンポーネントやDOMにアクセスすることはできず、シリアル化されたオブジェクトを介して特定のデータをスレッドに出し入れする必要があります。したがって、コードに問題を引き起こすには、本当に一生懸命働かなければなりません。jQueryはJavaScriptDOMライブラリです。

XMLHttpRequestただし、ワーカーでネイティブを使用することはできます。

scriptまた、外部スクリプトのインポートは、タグが付いたページを経由しません。ワーカーファイルでそのためにimportScripts()を使用します。

于 2011-01-29T19:20:04.670 に答える
25

これが私が見つけたものです:

この関数を使用して、外部スクリプトファイルまたはライブラリをワーカーにロードできます importScripts()

http://www.html5rocks.com/en/tutorials/workers/basics/#toc-enviornment-loadingscripts

importScripts('script1.js');
importScripts('script2.js');

また

importScripts('script1.js', 'script2.js');

ただし、jQueryにはDOMアクセスが必要であり、Webワーカーにはないため、jQueryをロードすることはできません。

于 2012-01-24T18:56:27.690 に答える
4

Webワーカーは外部ファイルにあるため、次のJavaScriptオブジェクトにアクセスできません。

  • ウィンドウオブジェクト
  • ドキュメントオブジェクト
  • 親オブジェクト

したがって、ワーカーファイル内で$を使用することはできません。このような従来の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での参照

于 2014-02-24T10:08:49.823 に答える
3

jQueryは、主にDOMの操作とWebページの操作に使用されます。そのため、DOMにアクセスできないWebワーカーにはあまり適していません。

underscore.jsなどのDOMライブラリの代わりにユーティリティライブラリを使用することもできます。あるいは、ユーティリティ関数を保持するだけで、すべてのDOM操作機能を持たないjQueryの軽量バージョンであるjQueryワーカーライブラリを作成する必要があるかもしれません。 。

于 2013-09-02T13:10:30.607 に答える
2

Node.JSの実行環境にも、ネイティブDOM実装がありません。Node.JSとHTML5Webワーカーには一定の制限があると言っても過言ではありません。

Node.JSでjQueryを使用する目的でDOM実装をシミュレートする方法があります。それでもWebワーカーでjQueryを使用したい場合は、Node.JSソリューションを検索して、それらが適用されるかどうかを確認する必要があると思います。

于 2011-06-08T05:35:49.620 に答える
1

このプラグインをご覧くださいhttps://github.com/rwldrn/jquery-hive

于 2011-08-05T15:14:02.253 に答える