首页 新闻 会员 周边

“Microsoft JScript 运行时错误: 缺少对象”问题请教

0
悬赏园豆:10 [已关闭问题]

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 运行时错误: 缺少对象”,该如何解决?或者有其他方法处理该问题?

问题补充: 页面代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="JFGLuDeng.Web.Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Title</title> <script language="javascript" type="text/javascript"> function load(onLineStatus) { window.defaultStatus= onLineStatus; //window.status=onLineStatus; } </script> </head> <frameset id="frame1" framespacing="0" rows="112,*" noresize frameborder="0"> <frame name="top" src="Top.aspx" scrolling="no" target="main"> </frame> <frame name="main" noresize scrolling="yes" src='Desktop/WorkForm.aspx' ></frame> </frameset> </html> 谢谢大家的关注,对此问题,补充一下: 程序在单页面运行时,可正常的写状态栏; 在框架下运行时,就出现此问题,分别是在框架的Top.aspx页和WorkForm.aspx页出现此问题; 分别在框架页面Default.aspx,Top.aspx和WorkForm.aspx的Page_Load中调用该方法; cs: public static void WriteInfo(string strMsg) { System.Web.HttpContext.Current.Response.Write("<script>window.setInterval(function(){load('test');},1000);</script>"); } 具体代码见http://files.cnblogs.com/MyFavorite/WebTest.rar,请教帮忙看下
MyFavorite的主页 MyFavorite | 初学一级 | 园豆:159
提问于:2010-03-11 17:30
< >
分享
其他回答(4)
0

你输出 的JS有问题嘛,好好检查下

齐.net | 园豆:1421 (小虾三级) | 2010-03-11 17:43
JS没有问题,在单页面运行,一切正常;在框架下运行,就会出现此问题;谢谢关注
支持(0) 反对(0) MyFavorite | 园豆:159 (初学一级) | 2010-03-12 08:44
0

输入代码是没问题的,请确定你的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框选中) 然后确定确定.截图如下

当然要想显示就必须要认为的开启这个功能。默认是不支持的。

西越泽 | 园豆:10775 (专家六级) | 2010-03-11 17:50
谢谢你的关注,附带的细节都提到了,非常感谢!呵呵 是我把问题没有说清楚。问题描述重新补充了,还麻烦你再看看!
支持(0) 反对(0) MyFavorite | 园豆:159 (初学一级) | 2010-03-12 09:39
0

确认下js函数load传入的变量onLineStatus。建议使用IE8的开发人员工具来调试并查看此变量的值。

风影极光 | 园豆:1573 (小虾三级) | 2010-03-11 21:28
出现此问题应该与变量无关吧,主要是找不到js的问题。谢谢关注
支持(0) 反对(0) MyFavorite | 园豆:159 (初学一级) | 2010-03-12 08:47
0

Page_Load里写的Response.Write输出在<html>标签之前,这个时候根本没有window对象,应该使用ClientScript.RegisterStartupScriptBlock

Gray Zhang | 园豆:17610 (专家六级) | 2010-03-11 23:22
0

Asp.net的输出顺序是先 response,然后输出 page的

 

所以你这个 函数在未加载 js的时候就执行了,所以会出现未找到对象

 

你可以把上面的改一下,改成

window.onload=function(){ 
//把你需要执行的函数放到这里
}

Dozer | 园豆:30 (初学一级) | 2010-03-11 23:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册