WebViewJavascriptBridge回调js方法

JavaScript017

WebViewJavascriptBridge回调js方法,第1张

JS格式不设置返回值的返回类型,是否有书面

功能ckeck(时){....}

这样的声明没有返回值就可以了,如果你需要返回,没有不回,并返回一个布尔类型通常确认是否有其他复杂的类型,你需要其他的函数回调

一、获取选中的文字

使用window.getSelection().toString()方法来获取选中的文字,在选中文字鼠标松开后会获取到选中的文字:

<p>可以选中一些文本</p>

<script type="text/javascript">

let selected = window.getSelection().toString()

console.log(selected)

if(selected != '' &&selected != null){

window.alert('要百度搜索吗?')

}

</script>

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

二、让内容可编辑

第一步:为元素设置contenteditable属性并赋值为true,让元素具有可编辑功能,当将其值赋值为false时不可编辑;

第二步:伪元素设置spellcheck属性,并赋值为true,即开启拼写检查,设置值为false时关闭拼写检查

**注意:**浏览器定义了多文本编辑命令,使用dicument,execCommand()可以调用(比如copy,selectAll等命令;在使用execCommand()方法时,界面元素的contenteditable属性值不能设置为true,否则会影响copy命令)

<div contenteditable="true" spellcheck="true"></div>

<button>提交</button>

<script type="text/javascript">

let div = document.querySelector('div')

let btn = document.querySelector('button')

btn.onclick = function(){

console.log(div.innerText)

}

</script>

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

三、JS动画

原理:通过定时器setInterval()不断移动盒子位置。

例:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<style type="text/css">

.box1{

width: 200px

height: 200px

position: absolute

top: 50px

background-color: #3B78DD

}

.box2{

width: 100px

height: 100px

position: absolute

top: 400px

background-color: lightblue

}

button{

position: absolute

top: 300px

}

</style>

</head>

<body>

<div class="box1"></div>

<div class="box2"></div>

<button>点击移动box2</button>

<script type="text/javascript">

let box1 = document.querySelector('.box1')

let box2 = document.querySelector('.box2')

let btn = document.querySelector('button')

function animate(obj, disdance, speed){

clearInterval(obj.timer)

obj.timer = setInterval(function(){

let moving = obj.offsetLeft

moving += 1

obj.style.left = moving + 'px'

if(moving >disdance){

clearInterval(obj.timer)

}

},speed)

}

animate(box1,300,5)

btn.onclick = function(){

animate(box2,400,3)

}

</script>

</body>

</html>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

如何快速判断交往物件的人品

我也经历过和你类似的感情,像这种事一般要从几方面去分析下,你们之间肯定是有感情基础的,即便分开一年那种感情是不会磨灭的,祝你好运!!!

如何快速判断交换机坏

两台电脑同时连线交换机 同一段IP相互ping通就证明好用 不通就坏了 最快的方法

如何加快gc的速度 快速判断物件生死

GC在什么时候对什么做了什么?

要回答这个问题,先了解下GC的发展史、jvm执行时资料区的划分、jvm记忆体分配策略、jvm垃圾收集演算法等知识。

先说下jvm执行时资料的划分,粗暴的分可以分为堆区(Heap)和栈区(Stack),但jvm的分法实际上比这复杂得多,大概分为下面几块:

1、程式计数器(Program Conuter Register)

程式计数器是一块较小的记忆体空间,它是当前执行绪执行位元组码的行号指示器,位元组码解释工作器就是通过改变这个计数器的值来选取下一条需要执行的指令。它是执行绪私有的记忆体,也是唯一一个没有OOM异常的区域。

2、Java虚拟机器栈区(Java Virtual Machine Stacks)

也就是通常所说的栈区,它描述的是Java方法执行的记忆体模型,每个方法被执行的时候都建立一个栈帧(Stack Frame),用于储存区域性变量表、运算元栈、动态连结、方法出口等。每个方法被呼叫到完成,相当于一个栈帧在虚拟机器栈中从入栈到出栈的过程。此区域也是执行绪私有的记忆体,可能丢掷两种异常:如果执行绪请求的栈深度大于虚拟机器允许的深度将丢掷StackOverflowError;如果虚拟机器栈可以动态的扩充套件,扩充套件到无法动态的申请到足够的记忆体时会丢掷OOM异常。

3、本地方法栈(Native Method Stacks)

本地方法栈与虚拟机器栈发挥的作用非常相似,区别就是虚拟机器栈为虚拟机器执行Java方法,本地方法栈则是为虚拟机器使用到的Native方法服务。

4、堆区(Heap)

所有物件例项和阵列都在堆区上分配,堆区是GC主要管理的区域。堆区还可以细分为新生代、老年代,新生代还分为一个Eden区和两个Survivor区。此块记忆体为所有执行绪共享区域,当堆中没有足够记忆体完成例项分配时会丢掷OOM异常。

5、方法区(Method Area)

方法区也是所有执行绪共享区,用于储存已被虚拟机器载入的类资讯、常量、静态变数、即时编译后的程式码等资料。GC在这个区域很少出现,这个区域记忆体回收的目标主要是对常量池的回收和型别的解除安装,回收的记忆体比较少,所以也有称这个区域为永久代(Permanent Generation)的。当方法区无法满足记忆体分配时丢掷OOM异常。

6、执行时常量池(Runtime Constant Pool)

执行时常量池是方法区的一部分,用于存放编译期生成的各种字面量和符号引用。

垃圾收集(Garbage Collection)并不是Java独有的,最早是出现在Lisp语言中,它做的事就是自动管理记忆体,也就是下面三个问题:

1、什么时候回收

2、哪些记忆体需要回收

3、如何回收

1、什么时候回收?

上面说到GC经常发生的区域是堆区,堆区还可以细分为新生代、老年代,新生代还分为一个Eden区和两个Survivor区。

1.1 物件优先在Eden中分配,当Eden中没有足够空间时,虚拟机器将发生一次Minor GC,因为Java大多数物件都是朝生夕灭,所以Minor GC非常频繁,而且速度也很快;

1.2 Full GC,发生在老年代的GC,当老年代没有足够的空间时即发生Full GC,发生Full GC一般都会有一次Minor GC。大物件直接进入老年代,如很长的字串阵列,虚拟机器提供一个-XX:PretenureSizeThreadhold引数,令大于这个引数值的物件直接在老年代中分配,避免在Eden区和两个Survivor区发生大量的记忆体拷贝;

1.3 发生Minor GC时,虚拟机器会检测之前每次晋升到老年代的平均大小是否大于老年代的剩余空间大小,如果大于,则进行一次Full GC,如果小于,则检视HandlePromotionFailure设定是否允许担保失败,如果允许,那只会进行一次Minor GC,如果不允许,则改为进行一次Full GC。

2、哪些记忆体需要回收

jvm对不可用的物件进行回收,哪些物件是可用的,哪些是不可用的?Java并不是采用引用计数演算法来判定物件是否可用,而是采用根搜寻演算法(GC Root Tracing),当一个物件到GC Roots没有任何引用相连线,用图论的来说就是从GC Roots到这个物件不可达,则证明此物件是不可用的,说明此物件可以被GC。对于这些不可达物件,也不是一下子就被GC,而是至少要经历两次标记过程:如果物件在进行根搜寻演算法后发现没有与GC Roots相连线的引用链,那它将会第一次标记并且进行一次筛选,筛选条件是此物件有没有必要执行finalize()方法,当物件没有覆盖finalize()方法或者finalize()方法已经被虚拟机器呼叫执行过一次,这两种情况都被视为没有必要执行finalize()方法,对于没有必要执行finalize()方法的将会被GC,对于有必要有必要执行的,物件在finalize()方法中可能会自救,也就是重新与引用链上的任何一个物件建立关联即可。

3、如何回收

选择不同的垃圾收集器,所使用的收集演算法也不同。

在新生代中,每次垃圾收集都发现有大批物件死去,只有少量存活,则使用复制演算法,新生代记忆体被分为一个较大的Eden区和两个较小的Survivor区,每次只使用Eden区和一个Survivor区,当回收时将Eden区和Survivor还存活着的物件一次性的拷贝到另一个Survivor区上,最后清理掉Eden区和刚才使用过的Survivor区,Eden和Survivor的预设比例是8:1,可以使用-XX:SurvivorRatio来设定该比例。

而老年代中物件存活率高,没有额外的空间对它进行分配担保,必须使用“标记-清理”或“标记-整理”演算法。

交往时,该怎样判断男友的人品

很简单,物以类聚人以群分,看他周围都是什么样的朋友就知道了。

如何甄别交往物件的真正品质?

从平时的言行举止就可以判断,另外还有就是遇到事情时候的态度,比如说健康,金钱之类的,不过还是不要用这类的试探,不小心会弄巧成拙!

如何知道恋爱物件的人品如何?

与他(她)交往中体会,或是去接近他(她)的朋友取得一定的情报

如何判断js物件的型别

使用typeof这一关键字,详细的可参考下面的文件

typeof相关文件

如何迅速判断男朋友的人品

看你认识多久,,,刚刚认识没多久的话就故意去勾引他 如果他控制不住 那这个男的就不怎么样。。。认识很久的话,那你就知道的更清楚很多了 凭感觉就好

如何快速建立物件的映象

制作win7映象方法:

1、在“RT 7 Lite”的起始页面,点选“浏览”下拉选单中的“Select ISO file”,载入并解压Windows 7光碟映象到一个分割槽的资料夹;

2、在跳出的版本选择提示框里,确认制作后的光碟映象版本(建议勾选:Windows ULTIMATE)同时勾选确认“整合Service Pack”;

3、在跳出的Service Pack Slipstream提示框内,点按“Browse”汇入对应版本的“SP1”;然后点按“Start”,即进入展开映象档案和“SP1”档案的过程;

4、完成“展开”后点按“Proceed”,即可自行载入映像、设定环境并载入安装包;

5、在主选单的“任务选择”中勾选“可引导ISO”;在建立映象中选择“Create Image”,即可顺利完成Windows 7 With SP1光碟映象建立;

6、退出时注意:等待“RT 7 Lite”自行清理完毕庞大的临时档案;

7、整个进度大概花费一个半小时,整合Windows7 SP1后,映象大小为2.79G了。

如何快速判断相亲物件是否适合继续接触

如果你真心喜欢他的话那就等着他,可以从细节中发现他是不是还喜欢你啊!比如说提醒你注意保暖了,吃饭什么的啊!