JavaScript能调用Jar包或者.so库中的代码吗

JavaScript013

JavaScript能调用Jar包或者.so库中的代码吗,第1张

1.将SO文件直接放到libs/armeabi下,然后代码中System.loadLibrary("xxx");再public native static int xxx_xxx_xxx();接下来就可以直接调用xxx_xxx_xxx()方法;2.第二种方案,创建自己的SO文件,在自己的SO文件里调用第三方SO,再在程序中调用自己的SO,这种比较复杂,需要建java类文件,生成.h文件,编写C源文件include之前生成的.h文件并实现相应方法,最后用android NDK开发包中的ndk-build脚本生成对应的.so共享库。 2. DEX加壳保护,DEX指令动态加载保护和高级源码混淆保护。其中DEX加壳保护是“爱加密”主推的卖点,该技术通过将DEX文件隐藏,并生成一个类似于虚像的壳文件,阻止黑客利用反编译工具获取App源码。另外,使得C/C++ 层面的代码安全也得到防护。加上资源文件保护(图片、音频等文件的防查看和防修改)、xml 主配文件保护(对主配文件进行二次签名)、内存保护等措施,可以基本保证App的动态和静态安全。

最近看到了好几个Flash网站,head代码里都加载了一个swfobject.js,这个JS究 竟有什么作用呢?眼下正在做一个Web页面,说不定刚好可以派上用场。于是,好奇的搜索了一下。原来这是老外开发的,用于在HTML中方面插入Adobe Flash媒体资源(*.swf文件)的独立、敏捷的JavaScript模块,该模块中的JavaScript脚本能够自动检测PC、Mac机器上各种 主流浏览器对Flash插件的支持情况。目前最新的版本是2.2,这里可以下载最新版的SWFObject:

http://code.google.com/p/swfobject/

发现用它的好处多多啊:

1.IE中没有讨厌的虚框问题了。

2.提供了完善的版本检测功能,如果版本不够则显示其他东西,比如图片或文字。

3.易于使用,只要在页面头加载一个 .js 文件,然后 HTML 写一个容器,里面放普通的文本或图片(用于无法显示 Flash 时显示),最后用脚本来替换这个元素里面的内容为 Flash。

4.使得插入Flash媒体资源尽量简捷、安全。而且它是非常符合搜索引擎优化的原则的。

5.能够避免HTML、XHTML中出现object、embed等非标准标签,从而符合更加标准。

只需要包含 swfobject.js这个js文件,然后在DOM中插入一些简单的JS代码,就能嵌入Flash媒体资源了。下面是一个最简单的范例:

<script type="text/javascript" src="swfobject.js"></script>

<div id="flashcontent">

This text is replaced by the Flash movie.

</div>

<script type="text/javascript">

var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699")

so.write("flashcontent")

</script>让我们看看这些代码是如何工作的

<div id="flashcontent">[...]</div>首先,我们要为SWF资源预留一个HTML结点。这个HTML结点内的所有内容都会在客户端被Flash资源替换,当客户端没有安装Flash播放器的时候,这些内容会显示出来。这一特色在SEO以及对用户体验方面非常有必 要。

var so = new SWFObject(swf, id, width, height, version, background-color [, quality, xiRedirectUrl, redirectUrl, detectKey])创建一个新的SWFObject实例,并且传入一下参数:

swf - SWF文件路径

id - 您为这个SWF文件分配的id值,它将用于给embed与object标签设定name属性,以便于可以支持swliveconnect的功能,如动态传 入变量

width - 宽度

height - 高度

version - FlashPlayer需要的版本号,它可以详细到 '主版本号.小版本号.细节',例如:"6.0.65"。一般地,我们只需传入主版本即可,例如:"6"。

background-color - Flash资源的背景色,16进制格式

此外,还有如下可选参数:

quality - 画面质量,默认为"high"。

xiRedirectUrl - 详见ExpressInstall相关

redirectUrl - 没有安装相应版本的播放器后自动跳转的目标地址

detectKey - 这是当忽略检测时,SWFObject将去url地址中查找的变量,默认值为“detectflash”,后续有详细介绍

so.write("flashcontent")将Flash资源应用到DOM里,在浏览器显示出来。

SWFObject在

<script type="text/javascript">

</script>

之间加入多个参数来实现各个效果,参数很多,但是实际只要一点点。我们可以看下这样的代码:

<script type="text/javascript" src="swfobject.js"></script>

<script type="text/javascript">

var so = new SWFObject("movie.swf", "mymovie", "400", "100%", "8", "#336699")

so.addParam("quality", "low")

so.addParam("wmode", "transparent")

so.addParam("salign", "t")

so.addVariable("variable1", "value1")

so.addVariable("variable2", "value2")

so.addVariable("variable3", "value3")

so.addVariable("variable1", getQueryParamValue("variable1"))

so.addVariable("variable2", getQueryParamValue("variable2"))

so.write("flashcontent")

</script>

这段代码给出了SWFObject的常用参数:

var so = new SWFObject(swf, id, width, height, version, background-color [, quality, xiRedirectUrl, redirectUrl, detectKey])

so.addParam("Param1", "Param2")

so.addParam("Param3", "Param4")

so.addParam("Param5", "Param6")

so.addVariable("variable1", "value1")

so.addVariable("variable2", "value2")

so.addVariable("variable3", "value3")

so.addVariable("variable1", getQueryParamValue("variable1"))

so.addVariable("variable2", getQueryParamValue("variable2"))

so.write("content")

解释一下这些参数的作用:

var so = new SWFObject(swf, id, width, height, version, background-color [, quality, xiRedirectUrl, redirectUrl, detectKey])//这段是SWFObject必须的基本参数,所有SWFObject都必须包含的。

so.addParam("Param1", "Param2") //这里是给Flash添加内联参数,可以实现诸如背景透明之类的效果。依照需求添加就可以了,参数和emded/object标签是一样的代码,下同。

so.addParam("Param3", "Param4")

so.addParam("Param5", "Param6")

so.addVariable("variable1", "value1") //这里是给Flash添加FlashVar,这是以FlashVar的方式给Flash的Root添加变量,对于Number型变量在Flash端需要 做类型转换。

so.addVariable("variable2", "value2")

so.addVariable("variable3", "value3")

so.addVariable("variable1", getQueryParamValue("variable1")) //Flash获取URL变量对于url?arg1=test1&arg2=test2这样用GET方式传递变量的URL,我们可以用 getQueryParamValue方法来获取变量。

so.addVariable("variable2", getQueryParamValue("variable2"))

so.write("content") //这里是至关重要的一个地方,他是用一段特定内容取代Flash无法显示时的内容。可以事先在CSS里定义好样式,在文档里使用div标签写出来。这里 在调用过来。

(转)

js获取搜索引擎搜索关键词有两种方法可以实现:

第一种方法:

var str1="" 

var str2= "" 

var refer=document.referrer 

var sosuo=refer.split(".")[1] 

var grep=null 

var str=null 

var keyword=null 

var skey="xx" 

var ykey="" 

switch(sosuo){ 

  case "baidu": 

    grep=/wd\=.*\&/i 

    str=refer.match(grep) 

    keyword=str.toString().split("=")[1].split("&")[0] 

    //console.log(decodeURIComponent(keyword)) 

 ykey=decodeURIComponent(keyword) 

    addCookie('key',decodeURIComponent(keyword),1) 

 //alert(decodeURIComponent(keyword)) 

  break 

  case "google": 

    grep=/&q\=.*\&/i 

    str=refer.match(grep) 

    keyword=str.toString().split("&")[1].split("=")[1] 

    //console.log(decodeURIComponent(keyword)) 

 ykey=decodeURIComponent(keyword) 

    addCookie('key',decodeURIComponent(keyword),1) 

  break 

  case "sogou": 

    grep=/query\=.*\&/i 

    str=refer.match(grep) 

    keyword=str.toString().split("&")[1].split("&")[2] 

    //console.log(decodeURIComponent(keyword)) 

 ykey=decodeURIComponent(keyword) 

    addCookie('key',decodeURIComponent(keyword),1) 

 //alert(decodeURIComponent(keyword)) 

  break 

  default: 

  addCookie('key','',1) 

var ckey=(getCookie('key')) 

//alert(ckey) 

if(ykey.indexOf(skey)>-1) 

}else 

function deleteCookie(name){ 

var date=new Date() 

date.setTime(date.getTime()-10000) 

document.cookie=name+"=v expires="+date.toGMTString() 

function getCookie(name){ 

var strCookie=document.cookie 

var arrCookie=strCookie.split(" ") 

for(var i=0i < arrCookie.lengthi++){ 

var arr=arrCookie[i].split("=") 

if(arr[0]==name)return arr[1] 

return "" 

function addCookie(name,value,expiresHours){ 

var cookieString=name+"="+escape(value) 

//判断是否设置过期时间 

if(expiresHours>0){ 

var date=new Date() 

date.setTime(date.getTime+expiresHours*3600*1000) 

cookieString=cookieString+" expires="+date.toGMTString() 

document.cookie=cookieString 

document.write(ykey) 

if(ykey=="") 

{} 

else 

 document.write("") 

}

第二种方法:

function getDomainQuery(url) {   

    var d = []   

    var st = url.indexOf('//', 1)   

    var _domain = url.substring(st + 1, url.length)   

    var et = _domain.indexOf('/', 1)   

    d.push(_domain.substring(1, et))   

    d.push(_domain.substring(et + 1, url.length))   

    return d   

}   

function route() {   

    var eg = []   

    eg.push(['baidu', 'wd'])   

    eg.push(['google', 'q'])   

    eg.push(['soso', 'w'])   

    eg.push(['yodao', 'q'])   

    eg.push(['bing', 'q'])   

    eg.push(['yahoo', 'q'])   

    eg.push(['sogou', 'query'])   

    eg.push(['gougou', 'search'])   

    eg.push(['360', 'q'])   

    var dq = getDomainQuery(document.referrer)   

    var keyword=null   

    var grep=null   

    var str=null   

    for(var el in eg){   

        var s = eg[el]   

        var DandQ=String(s).split(",") //字符分割   

        if (dq[0].indexOf(DandQ[0])>0){   

            eval("grep=/"+DandQ[1]+"\=.*\&/i")   

            str = dq[1].match(grep)   

            keyword = str.toString().split("=")[1].split("&")[0]   

            keyword = decodeURIComponent(keyword)   

            alert(keyword)   

            return false   

        }   

    }   

}   

route()