
<script language="JavaScript">
var Application=new ActiveXObject('Shell.Application.1')
</script>
下面的代码加在<body></body>中
<button onclick=Application.ShutdownWindows()>关机</button><br>
<button onclick=Application.Suspend()>挂起</button>
对于app打开而言最常规的打开就是通过url scheme的方式去打开你的app,如下的
myapp://myapp://open
myapp://type=1&id=2sdeo223lwe
这些抛出都是以url的方式进行抛出,app捕捉到这些抛出去做相应的处理,本文对app的处理不做详细描述,app开发请自行谷歌百度。对于前端而言抛出的方式也有很多,而最理想的方式是通过iframe的src对其进行链抛出,来!说的在多都没有代码来的清晰,请看下面。
//实际上就是新建一个iframe的生成器var createIframe=(function(){
var iframe
return function(){
if(iframe){
return iframe
}else{
iframe = document.createElement('iframe')
iframe.style.display = 'none'
document.body.appendChild(iframe)
return iframe
}
}
})()
之后我们还需要一个url scheme:
//生成一个url scheme,假设我们约定的scheme是myApp://type=1&id=iewo212j32这种形式的var baseScheme = "myApp://"
var createScheme=function(options){
var urlScheme=baseScheme
for(var item in options){
urlScheme=urlScheme+item + '=' + encodeURIComponent(options[item]) + "&"
}
urlScheme = urlScheme.substring(0, urlScheme.length - 1)
return encodeURIComponent(urlScheme)
}
这种scheme形式的其实不是最好的,根据我们踩过的坑,觉得约定为与http协议相近可能更好一些,具体的协议需要前端人员自己去和app端人员约定。
ok万事具备,iframe有了,urlScheme也有了,该去打开app了
var openApp=function(){var localUrl=createScheme()
var openIframe=createIframe()
if(isIos()){
//判断是否是ios,具体的判断函数自行百度
window.location.href = localUrl
var loadDateTime = Date.now()
setTimeout(function () {
var timeOutDateTime = Date.now()
if (timeOutDateTime - loadDateTime < 1000) {
window.location.href = "你的下载页面"
}
}, 25)
}else if(isAndroid()){
//判断是否是android,具体的判断函数自行百度
if (isChrome()) {
//chrome浏览器用iframe打不开得直接去打开,算一个坑
window.location.href = localUrl
} else {
//抛出你的scheme
openIframe.src = localUrl
}
setTimeout(function () {
window.location.href = "你的下载页面"
}, 500)
}else{
//主要是给winphone的用户准备的,实际都没测过,现在winphone不好找啊
openIframe.src = localUrl
setTimeout(function () {
window.location.href = "你的下载页面"
}, 500)
}
}
以上就是你要打开scheme的主要代码了,好吧,实际上不只是打开app,还要实现未打开的时候跳到下载页去。其中安卓实际上无论有没有打开都会跳到下载页去,而ios........好吧!按照网上的说法是浏览器失焦后会挂起脚本,呵呵,这是多老的ios版本的表现了,实际上现在的ios已经没有这么做,有些版本会跟安卓的表现一样,而有些则是直接跳转根本不会去打开,还有打开的时候那个恶心的系统d窗是什么鬼。好吧,实际上至此你会发现,ios9.0以上的有些打不开直接跳,有些打得开还会有允许d窗,而微信则是无论如何都打不开,实际上微信会在他的浏览器里拦截掉所有未经其允许的scheme包括app store。
转自:《怎么在网页中打开你的app》@AlfredMou -- segmentfault
HtmlTextWriter是专门用于把HTML内容输出到浏览器中的一个类,下面是该类支持的部分方法:AddAttribute ——已重载。 对于 HtmlTextWriter 对象通过对 RenderBeginTag 方法的后续调用创建的元素,向其开始标记中添加指定的标记属性和值。
AddStyleAttribute ——已重载。 对于 HtmlTextWriter 对象通过对 RenderBeginTag 方法的后续调用创建的元素,向其开始标记中添加标记样式属性。
RenderBeginTag ——已重载。 将标记元素的开始标记写入到输出流。
RenderEndTag ——将标记元素的结束标记写入到输出流。
Write ——已重载。 已重写。 将指定数据类型连同任何挂起的制表符间距一起写入到输出流。
WriteBreak ——将 <br />标记元素写入到输出流。
注意:从Control类派生的基础控件是重写Render方法来使用HtmlTextWriter类的方法来输出HTML内容到浏览器的,而派生于WebControl类的自定义控件则是通过重写RenderContents这个方法来完成该功能。
例如下面代码是在RenderContens方法里利用HtmlTextWriter类的方法来生成HTML表格的。
1 using System
2 using System.Web.UI
3 using System.Web.UI.WebControls
4 using System.Drawing
5
6 namespace myControls
7 {
8 public class ColorTable : WebControl
9 {
10 protected override void RenderContents(HtmlTextWriter writer)
11 {
12 // Get list of colors
13 KnownColor[] colors = (KnownColor[])Enum.GetValues(typeof(KnownColor))
14
15 // Render opening table tag
16 writer.AddAttribute(HtmlTextWriterAttribute.Border, "1")
17 writer.RenderBeginTag(HtmlTextWriterTag.Table)
18
19 // Render table body
20 foreach (KnownColor colorName in colors)
21 {
22 writer.RenderBeginTag(HtmlTextWriterTag.Tr)
23
24 // Render first column
25 writer.RenderBeginTag(HtmlTextWriterTag.Td)
26 writer.Write(colorName)
27 writer.RenderEndTag()
28
29 // Render second column
30 writer.AddAttribute(HtmlTextWriterAttribute.Width, "50px")
31 writer.AddAttribute(HtmlTextWriterAttribute.Bgcolor, colorName.ToString())
32 writer.RenderBeginTag(HtmlTextWriterTag.Td)
33 writer.Write(" ")
34 writer.RenderEndTag()
35
36 writer.RenderEndTag()
37 }
38
39 // close table
40 writer.RenderEndTag()
41 }
42 }
43 }
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)