据我所知,Web worker需要在一个单独的JavaScript文件中编写,并像这样调用:
new Worker('longrunning.js')
Run Code Online (Sandbox Code Playgroud)
我正在使用闭包编译器来组合和缩小我的所有JavaScript源代码,而我宁愿不必将我的worker放在单独的文件中进行分发.有办法做到这一点吗?
new Worker(function() {
//Long-running work here
});
Run Code Online (Sandbox Code Playgroud)
鉴于第一类函数对JavaScript至关重要,为什么执行后台工作的标准方法必须从服务器加载整个'其他JavaScript文件?
我们可以像HTML5一样使用HTML5中的web worker:
var worker = new Worker('worker.js');
Run Code Online (Sandbox Code Playgroud)
但为什么我们不能称这样的函数?
var worker = new Worker(function(){
//do something
});
Run Code Online (Sandbox Code Playgroud) 这是我的HTML:
<a>View it in your browser</a>
<div id="html">
<h1>Doggies</h1>
<p style="color:blue;">Kitties</p>
</div>
Run Code Online (Sandbox Code Playgroud)
如何使用JavaScript来使href我的链接点的属性base64编码的网页,其来源是innerHTML的div#html?
我基本上想要在这里完成相同的转换(选中base64复选框),但在JavaScript中除外.
我正在尝试从我的扩展程序的内容脚本创建一个Web Worker,但它被SecurityError(相同的源策略)阻止.最好的方法是什么?
从我的内容脚本:
var workerURL = chrome.extension.getURL("js/searchWorker.js");
var lunrWorker = new Worker(workerURL);
Run Code Online (Sandbox Code Playgroud)
从清单:
"content_scripts": [
{
"matches": ["http://localhost:8000/*"],
"js": ["js/jquery.min.js", "js/jquery.highlight.js", "js/index.js"],
"css": ["css/bootstrap.css", "css/styles.css"]
}
]
Run Code Online (Sandbox Code Playgroud)
我也尝试在我的清单中设置它,但它没有帮助:
"content_security_policy": "default-src 'none'; style-src 'self'; script-src 'self';",
Run Code Online (Sandbox Code Playgroud)
(旁注:CSS没有被注入页面,我不确定这是否是同一问题的症状或无关)
是否有任何替代解决方案可以从字符串 var 创建 js 函数,除了eval()出于Function constructor
安全原因我不允许使用这两种方法。
当你使用 js 代码创建 DOM 元素并添加到页面时,我知道解决方案,但这绝对是肮脏的黑客行为。非常感谢您的帮助。
====
添加
我收到了带有“a === b”、“!a”、“(a && b) || c”等字符串的 json 数据...(数百种组合)。需要创建并返回可以执行此比较功能的函数。
某物
var test = function ('a === b') {
//some code without eval and new Function()
}
// in console
test('aa', 'bb') // return false
Run Code Online (Sandbox Code Playgroud) 我正在使用JavaScript来生成唯一文件值的文件哈希值。请检查下面的代码,以了解效果良好的哈希生成机制。
<script type="text/javascript">
// Reference: https://code.google.com/p/crypto-js/#MD5
function handleFileSelect(evt)
{
var files = evt.target.files; // FileList object
// Loop through the FileList and render image files as thumbnails.
for (var i = 0, f; f = files[i]; i++)
{
var reader = new FileReader();
// Closure to capture the file information.
reader.onload = (function(theFile)
{
return function(e)
{
var span = document.createElement('span');
var test = e.target.result;
//var hash = hex_md5(test);
var hash = CryptoJS.MD5(test);
var elem = document.getElementById("hashValue");
elem.value = hash; …Run Code Online (Sandbox Code Playgroud) 从 Chrome 80 开始,您可以使用 来创建模块类型的工作器new Worker("worker.js", { type: "module" }),然后使用import工作器脚本中的模块功能。然而,其他浏览器仍在为此提供支持,因此使用它需要功能检测和回退。
是否有一种方便简单的方法来为工作人员提供检测模块支持?
注意在某些平台(例如 Cordova)上创建工作线程实际上并不简单,并且涉及大量变通方法,因此在纯 JS 中工作的东西将是理想的。
javascript ×6
web-worker ×4
base64 ×1
cryptojs ×1
data-uri ×1
ecmascript-6 ×1
es6-modules ×1
hash ×1
html ×1
html5 ×1
md5 ×1
php ×1
url ×1