解决方案 »
- DaTable里的数据怎么在页面显示
- AspNetPager 分页控件 URL重写问题
- 方法没有采用2个参数的重载
- 未将对象引用设置到对象的实例。
- asp.net(c#)很简单的日期格式问题
- [急] C语言简单题求解
- datalist里嵌套了RadioButtonList,怎么取得RadioButtonList的值
- 在线等~~~一个看似简单的问题
- 请问,当多个客户端访问同一个ASPX页面时,是否要考虑线程安全的问题??懂的进
- 微软MVP请进,解答一疑惑
- asp.net 把错误信息放入错误页面===================================
- 如何释放多线程所占用的系统内存。
if (z)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "wBox_close", "<script>function (close)</script>");
}
我试过了 没有反应
如果你给了ImageButton 一个服务器短的单击事件,那就在ImageButton的前面隐藏一个链接,
并且ImageButton的class去掉
成<a id="tempclick" class="wBox_close" href="#"></a>
<asp:ImageButton/>
注册脚本改成 Page.ClientScript.RegisterStartupScript(this.GetType(), "tempclick", "<script> document.getElementById('tempclick').click(); </script>");
我没有试啊,感觉是这个问题。
<script type="text/javascript">
function Click(o)
{
event.returnValue = false;
document.getElementById ("ImageButton2").click();
}</script><asp:ImageButton ID="ImageButton2" runat="server" class="wBox_close"/>
code]然后在CS文件中调用这个JS函数[code=C#]Page.ClientScript.RegisterStartupScript(this.GetType(), "Click", "<script>click(o)</script>"); 但是还是不能执行。很难理解网上查了下都是这么在CS中调用JS函数的。求高人解答错在哪里
/// JSEngine 在后台运行js的解释器返回值
/// </summary>
public class JSEngine
{
//初始化加载程序的字符串;
public static readonly String _jsString = @"class theEval{ public function Eval(str:String):String {return eval(str)}}";
public static readonly String _jsClassName = @"theEval";
public static readonly String _jsMethodName = @"Eval";
//定义对象
public static object _evalObject = new object();
public static Type _evalType = new object().GetType();
//构造函数
static JSEngine()
{
CreatJSEngine(ref _evalObject, ref _evalType, _jsString, _jsClassName);
} /// <summary>
/// 初始化引擎的方法
/// </summary>
/// </summary>
/// <param name="evalObject">指定一个 已存在的变量 保存 使用evalType的类型生成一个实例</param>
/// <param name="evalType">指定一个 已存在的变量 保存 生成的程序集中有指定名称的对象type</param>
/// <param name="jsString">指定用来生成程序集的代码文本</param>
/// <param name="jsClassName">指定用来进行调用的程序集中的类别名称</param>
private static void CreatJSEngine(ref object evalObject, ref Type evalType, string jsString, string jsClassName)
{
CodeDomProvider _provider = new JScriptCodeProvider();
CompilerParameters _parameters = new CompilerParameters();
_parameters.GenerateInMemory = true;
CompilerResults _result = _provider.CompileAssemblyFromSource(_parameters, jsString);
Assembly _assembly = _result.CompiledAssembly;
evalType = _assembly.GetType(jsClassName);
evalObject = Activator.CreateInstance(evalType);
} /// <summary>
/// StringEval
/// </summary>
/// <param name="inp_JSString">传入一个表达式</param>
/// <returns>返回一个表达式的值</returns>
public static object StringEval(string inp_JSString)
{
return _evalType.InvokeMember(_jsMethodName, BindingFlags.InvokeMethod, null, _evalObject, new object[] { inp_JSString });
} /// <summary>
/// StringEval
/// </summary>
/// <param name="inp_JSFunctionString">指定用来生成程序集的代码文本</param>
/// <param name="inp_JSFunctionClassName">指定用来进行调用的程序集中的类别名称</param>
/// <param name="inp_JSFunctionClassFuncName">指定用来进行调用的程序集中的类别中的函数的名称</param>
/// <param name="inp_ParameterObject">要传递到程序集中的变量对象数组,无参时使用 new object[0]</param>
/// <returns>返回函数调用的值</returns>
public static object StringEval(string inp_JSFunctionString, string inp_JSFunctionClassName, string inp_JSFunctionClassFuncName, object[] inp_ParameterObject)
{
object ClosureevalObject = null;
Type ClosureevalType = null;
CreatJSEngine(ref ClosureevalObject, ref ClosureevalType, inp_JSFunctionString, inp_JSFunctionClassName);
return ClosureevalType.InvokeMember(inp_JSFunctionClassFuncName, BindingFlags.InvokeMethod, null, ClosureevalObject, inp_ParameterObject);
} /// <summary>
/// StringEval
/// </summary>
/// <param name="inp_JSString">传入一个表达式</param>
/// <param name="inp_theType">指定的要返回的值类型</param>
/// <returns>返回的值</returns>
public static object StringEval(string inp_JSString, Type inp_theType)
{
return Microsoft.JScript.Convert.Coerce(_evalType.InvokeMember(_jsMethodName, BindingFlags.InvokeMethod, null, _evalObject, new object[] { inp_JSString }), inp_theType);
}
}
。
$it.find('.wBox_close').click(_this.close);
注册了 class是 wBox_close的 Dom对象的 click处理函数_this.close估计是 ifr 还没有 完成这个注册过程,Page.ClientScript.RegisterStartupScript里生成的js就已经执行了这种情况最搓的方案是 加个延迟时间在执行RegisterStartupScript里生成的js
Page.ClientScript.RegisterStartupScript 的内容改成
StringBuilder sb = new StringBuilder();
sb.AppendLine("<script type=\"text/javascript\">");
sb.AppendLine("onload = function() {");
sb.AppendLine(" Click();");
sb.AppendLine("}");
sb.AppendLine("</script>");
Page.ClientScript.RegisterStartupScript(this.GetType(), "Click", sb.ToString());试试
<script type="text/javascript">
onload = function click() {
click();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
function click1()
{
parent.document.getElementById("XXX").style.display = "none";}
Page.ClientScript.RegisterStartupScript(this.GetType(), "click1", "<script> document.getElementById('click1').click(); </script>");