GVKun编程网logo

执行顺序与浏览器上的 tensorflow.js 和 javascript 不同步(浏览器执行js的过程)

24

本篇文章给大家谈谈执行顺序与浏览器上的tensorflow.js和javascript不同步,以及浏览器执行js的过程的知识点,同时本文还将给你拓展flashswf与浏览器javascript互相调用

本篇文章给大家谈谈执行顺序与浏览器上的 tensorflow.js 和 javascript 不同步,以及浏览器执行js的过程的知识点,同时本文还将给你拓展flash swf与浏览器javascript 互相调用、javascript attachEvent绑定多个事件执行顺序问题_javascript技巧、javascript setAttribute, getAttribute 在不同浏览器上的不同表现_javascript技巧、javascript – canvas2d toDataURL()在不同浏览器上的不同输出等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

执行顺序与浏览器上的 tensorflow.js 和 javascript 不同步(浏览器执行js的过程)

执行顺序与浏览器上的 tensorflow.js 和 javascript 不同步(浏览器执行js的过程)

model.predict 函数是一个同步函数,也就是说 await 关键字不会对它们产生影响,您可以在调用 await 时删除 model.predict 关键字,然后删除 {{ 1}} 定义 async 函数时。

predict_model 函数是一个同步函数(如:predict_model),“它”等待操作完成然后执行下一行代码。在您的情况下,该函数将在执行时阻塞主线程(UI 线程),这意味着您无法在浏览器上单击、更新 DOM、运行动画...。

简单的想法是让let a = 1 + 1;成为带有predict_model函数的异步函数,setTimeout会将“内容”推送到“队列”,并且不会锁定您的UI线程:

setTimeout

flash swf与浏览器javascript 互相调用

flash swf与浏览器javascript 互相调用

package {
		import flash.external.ExternalInterface;
		import flash.text.TextField;
		import flash.display.*;
		import flash.events.*;
		import flash.events.MouseEvent;
     public class main extends Sprite{
     private var _sp:Sprite;
	 public function main():void{		 
	                _sp=new Sprite();    
	       		   _sp.graphics.beginFill(0xd6d6d6);
				   _sp.graphics.drawRect(0,550,60);
				   _sp.graphics.endFill();
				   addChild(_sp);
				  _sp.addEventListener(MouseEvent.CLICK,loadtitle);
				  //给浏览器调用函数
				  ExternalInterface.addCallback("getMessage",showMessage);
	 }
	 public function loadtitle(e:Event):void{
		    	 var w:TextField=new TextField();
				 var  str:String="浏览器返回值:"+ExternalInterface.call("getTitle");
				  w.text=str;
				  w.width=str.length*12;				  
				  w.x=100;
				  w.y=80;
				 addChild(w);
	 }
	 public function showMessage(str:String):String{
		   return str+"actionscript 返回值";
	 }
  }
}

html文件

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh_cn" lang="zh_cn">
<head>
<Meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>js</title>
<script language="JavaScript" type="text/javascript">
function getTitle()
{
    return "browser return";
}
function showme(){
  document.getElementById("show").innerHTML=detect("js").getMessage("goggogo");
}
function detect(id){
  if(navigator.appName.indexOf("Microsoft")!=-1){
     return window[id];
  }else{
     return window.document[id];
  }
}
// -->
</script>
</head>
<body bgcolor="#ffffff">
	<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0" width="550" height="400" id="js" align="middle">
	<param name="allowScriptAccess" value="sameDomain" />
	<param name="allowFullScreen" value="false" />
	<param name="movie" value="js.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />	
<embed src="js.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="js" align="middle" allowScriptAccess="sameDomain"
 allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_cn" />
	</object>
	<button onclick="showme()">点击</button>
	<div id="show"></div>
</body>
</html>

javascript attachEvent绑定多个事件执行顺序问题_javascript技巧

javascript attachEvent绑定多个事件执行顺序问题_javascript技巧

常见的绑定事件有直接绑定在页面元素中比如

,这个换种方法也就是分离出来写在js代码里如document.getElementById(''wrap'').onclick = function(){a();},此时如果需要绑定多个方法则直接写在一起即可如document.getElementById(''wrap'').onclick = function(){a();b();}或
。然而我们时常这样来写一个单独的绑定方法bind(el,name,fn),具体代码如下。
复制代码 代码如下:

function bind(el,name,fn){ //绑定事件
return el.addEventListener?el.addEventListener(name,fn,false):el.attachEvent(''on''+name,fn);
}

这样在一个dom对象上绑定多个click事件如
复制代码 代码如下:

bind(document.getElementById(''wrap''),''click'',a);
bind(document.getElementById(''wrap''),''click'',b);

在ie6,7,8下面就会出现执行顺序的问题(ie9下面暂时不清楚,没有环境测试,希望有环境的朋友帮忙测试下),而其他浏览器ff,chrome,safari下则是按照顺序执行。查找资料得到的是ie8下会颠倒执行顺序,ie6,ie7则是随机执行的,这个我实在不明白ie怎么会出现随机执行?难不成是别有目的的?如果有知道这样做的目的的朋友也能告知一声,经过自己的测试证实ie8确实颠倒执行的顺序而ie6,7则无规律的执行。我理解的随机执行应该是每次执行都是不一样的顺序然而实际上只要写的时候顺序固定那么执行的时候顺序也是固定的(虽然无规律也或许是我没找出规律)。

但是jQuery的$.bind(type, data, fn)方法则没有这个问题,找jQuery的原代码看了下,发现里面也是用的
复制代码 代码如下:

if (elem.addEventListener)
    elem.addEventListener(type, handle, false);
  else if (elem.attachEvent)
    elem.attachEvent("on" + type, handle);

这样方法绑定的事件,但是在此之前会判断该jquery对象上面是否已经同一个类型的handlers,如果有则不会重复绑定而是把该对象的handle合并到handlers中成为一个方法相当于这样function c(){a();b();},按照顺序的压入方法这样实现在ie下不会出现绑定多个方法时出现执行顺序混乱了.

如下是网友的回复:

IE6 7 会随机执行?我上次测试的时候貌似顺序相反,没有随机执行这一说。
我特意去测试了
复制代码 代码如下:


test


并无随机一说 IE6。不知道你如何测试的。

作者的回答:
我拿你的代码在ie6,ie7下测试也是无规律的执行顺序,这里是资料出处http://www.w3help.org/zh-cn/causes/SD9011,上面所谓的随机执行我也觉得欠妥,就如我博文里说的那样,执行顺序是没有规律的,但是每次执行的顺序是一样的,如果是随机那么应该每次执行的顺序都不一样才对,这才是我想要说明的

javascript setAttribute, getAttribute 在不同浏览器上的不同表现_javascript技巧

javascript setAttribute, getAttribute 在不同浏览器上的不同表现_javascript技巧

测试环境(客户端浏览器 )
ie6,ie7, ie8兼容模式, ie8
firefox 3.6.8, google chrome 5.0.375.125

先来说明两个函数的标准定义。
elementnode.setattribute(name,value)
name 必需。规定要设置的属性名。
value 必需。规定要设置的属性值。
该方法把指定的属性设置为指定的值。如果不存在具有指定名称的属性,该方法将创建一个新属性。

elementnode.getattribute(name)
name 必需。规定从中取得属性值的属性。

一、setattribute的问题
elementnode为...

希望对其增加一个单击行的事件处理函数,
写法1:

table1row1.setAttribute("onclick", "selectrow1(this)");
登录后复制


IE8, Firefox, google chrome 能正确触发click 事件
IE6,IE7则不能触发click 事件。
写法2:

table2row1.onclick = function() { selectrow2(this) };
登录后复制
登录后复制

所有测试浏览器均能触发click 事件

故为了兼容在不同的IE中,我们可以统一使用如下语句。

table2row1.onclick = function() { selectrow2(this) };
登录后复制
登录后复制

二、getAttribute的问题
elementNode为...
先用setAttribute设置属性
table1row1.setAttribute("level", 1);
再用getAttribute来获取标签的属性值
var level = table1row1.getAttribute("level");
alert("table1row1 level:" + level + "\r\ntypeof(level) = " + (typeof (level)).toString());
在IE6,7 中显示

table1row1 level:1
typeof(level) = number

在IE8, Firefox, google chrome中显示



table1row1 level:1
typeof(level) = string
为统一处理此两种情况,代码统一如下:

代码如下:

立即学习“Java免费学习笔记(深入)”;

var level = table1row1.getAttribute("level"); 
if (level === undefined || level == null) { 
level = "0"; 
} 
level = level.toString(); 
if (level.trim() == "") { 
level = "0"; 
}
登录后复制

或者使用ajax方法
$addHandler 是Sys.UI.DomEvent.addHandler 的快捷方式,它的语法为:
$addHandler(element, eventName, handler);
element 公开事件的 DOM 元素。
eventName 事件的名称。
handler 要添加的事件处理程序。
前面的语句可以写成这样:
$addHandler(row,"click", function() { selectrow(this) });
登录后复制

代码如下:

 
 
 
Test 
 
 
 
table1
No. Item
1 2C.40E80.041
2 4L.013Y2.003

table2
No. Item
1 4G.0QE18.001
2 2K.61209.208
登录后复制

以上就是javascript setAttribute, getAttribute 在不同浏览器上的不同表现_javascript技巧的内容。

javascript – canvas2d toDataURL()在不同浏览器上的不同输出

javascript – canvas2d toDataURL()在不同浏览器上的不同输出

我有相同的图像和相同大小的画布,但输出是不同的.我想要相同的输出,我应该怎么做?

var canvas = document.createElement('canvas'),ctx = canvas.getContext('2d'),img = new Image;

img.crossOrigin = 'Anonymous';

img.onload = function(){
    canvas.height = img.height;
    canvas.width = img.width;
    ctx.drawImage(img,0);
    var dataURL = canvas.toDataURL();
    setBreakpoint(dataURL);
    callback.call(this,dataURL);
    canvas = null;
};

img.src = url;

解决方法

使用 FileReader及其方法 readAsDataURL().

对于外部文件,您仍然可以使用它感谢XMLHttpRequest对象及其xhr.responseType =“blob”属性,同时受到跨源请求的限制.

我没有尝试过每一个浏览器,但这应该比画布更精确.

绘制到画布上的图像在绘制之前被解码,然后在调用toDataURL时重新编码.这个过程取决于每个浏览器,甚至每台机器(由@Oriol查看canvas fingerprinting和this post).

显然,这个过程会修改原始文件的内容(它实际上与它无关.)

编辑,

我认为这个答案可能是测试这种技术的好地方,所以这里有一个片段,它将测试你的浏览器对我的转换.

var xhr = new XMLHttpRequest();
xhr.responseType = 'blob';
xhr.onload = function() {
  var f = new FileReader();
  f.onload = function() {
    if (this.result === imageDataURL) {
      console.log('same conversion');
    }
    else {
      console.log('please post a comment to let me kNow that it\'s also browser/machine dependant');
      }
  };
  f.readAsDataURL(this.response);
};

xhr.open('GET','https://dl.dropBoxusercontent.com/s/4e90e48s5vtmfbd/aaa.png');
xhr.send();

var imageDataURL = 'data:image/png;base64,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';

我们今天的关于执行顺序与浏览器上的 tensorflow.js 和 javascript 不同步浏览器执行js的过程的分享已经告一段落,感谢您的关注,如果您想了解更多关于flash swf与浏览器javascript 互相调用、javascript attachEvent绑定多个事件执行顺序问题_javascript技巧、javascript setAttribute, getAttribute 在不同浏览器上的不同表现_javascript技巧、javascript – canvas2d toDataURL()在不同浏览器上的不同输出的相关信息,请在本站查询。

本文标签:

上一篇如何定义@提到的是否是订阅者? TMI.js(是否订阅啵乐)

下一篇如何从嵌套对象api json数据制作键值对对象数组(对象嵌套对象的json怎么解析)