asp.net中,要在IE状态栏时刻检查串口是否连接成功;代码如下:
protected void Page_Load(object sender, EventArgs e)
{
System.Web.HttpContext.Current.Response.Write("<script>window.setInterval(function(){load('test');},1000);</script>");
}
运行时提示“Microsoft JScript 运行时错误: 缺少对象”,该如何解决?或者有其他方法处理该问题?
你输出 的JS有问题嘛,好好检查下
输入代码是没问题的,请确定你的html代码页面中有<script type="text/javascript">
function load(v){/*执行操作*/}
</script>
类似这样子的函数。也就是对load函数的定义。另外有一个小问题就是,System.Web.HttpContext.Current.Response.Write("<script>window.setInterval(function(){load('test');},1000);</script>");这句话会先于html中javascript脚本的加载,所以如果在页面未加载完成时页面中已经输出了<script>window.setInterval(function(){load('test');},1000);</script>这段脚本,此时会进行执行,因此也就没有回出现无load这个函数了,当然就会报错了。解决这个问题的办法可以是在load函数定义的脚本段后放入一个Literal控件,然后把<script>window.setInterval(function(){load('test');},1000);</script>这段代码放入Literal的Text中(Literal1.Text = "<script>window.setInterval(function(){load('test');},2000);</script>";)。这样子即可解决。
在修改回复
非常抱歉的告诉你,目前window.defaultStatus这个属性默认状态下IE7+以及FF3+的版本都是禁止启用的。
所以如果你在不修改设置的前提下使用这几种浏览器的话,是看不到任何效果的,不过IE6可以正常显示该状态属性(小小的庆幸下)。
但是经过一顿摸索,找到了一种在IE8(IE7通过类似方式也应该可以)下可以显示的方式,操作方式是 工具>>Internet选项>>安全>>Internet>>自定义级别>>允许状态栏通过脚本更新选择启用状态。然后确定确定关闭即可。如下图
同时为了进一步说明该问题,也找到了FF下可以看到的方法:操作如下 工具>>选项>>内容>>启用Javascript水平对应的高级选项(快捷键为V)>>在Javascript高级设置中设置 修改状态栏内容 为启用(checkbox框选中) 然后确定确定.截图如下
当然要想显示就必须要认为的开启这个功能。默认是不支持的。
确认下js函数load传入的变量onLineStatus。建议使用IE8的开发人员工具来调试并查看此变量的值。
Page_Load里写的Response.Write输出在<html>标签之前,这个时候根本没有window对象,应该使用ClientScript.RegisterStartupScriptBlock
Asp.net的输出顺序是先 response,然后输出 page的
所以你这个 函数在未加载 js的时候就执行了,所以会出现未找到对象
你可以把上面的改一下,改成
window.onload=function(){
//把你需要执行的函数放到这里
}