如何在代码隐藏中,在页面加载时从javascript函数中检索值。 javascript函数如:
<script type="text/javascript">
function isIFrame() {
var isInIFrame = (top.location != self.location);
if (isInIFrame) {
return "inside";
}
else {
return "outside";
}
}
</script>
和背后的代码如下:
protected void Page_Load(object sender, EventArgs e)
{
string resutOfExecuteJavaScript = "";
// resutOfExecuteJavaScript = isIFrame(); // from javascript
if (resutOfExecuteJavaScript == "inside")
{
// do something
}
else
{
// do something
}
}
谢谢。
答案 0 :(得分:5)
您无法直接从服务器端代码调用客户端javascript方法。首先,您需要将函数结果分配给某个隐藏变量的值,然后在服务器端访问它
假设您有一个像这样的隐藏字段
<input type="hidden" runat="server" id="hdnVal"/>
然后您可以将值设置为
document.getElementById("hdnVal").value=isIFrame();
然后在发球区
string resutOfExecuteJavaScript = hdnVal.Value;
答案 1 :(得分:1)
使用_doPostBack,你可以解决这个问题
<script type="text/javascript">
function isIFrame() {
var isInIFrame =(top.location != self.location);
var result;
if (isInIFrame) {
result="inside";
}
else
{
result ="outside";
}
__doPostBack('callPostBack', result);
</script>
</head>
在代码背后的部分
protected void Page_Load(object sender, EventArgs e)
{
this.ClientScript.GetPostBackEventReference(this, "arg");
if (IsPostBack)
{
string eventTarget = this.Request["__EVENTTARGET"];
string eventArgument = this.Request["__EVENTARGUMENT"];
if (eventTarget != String.Empty && eventTarget == "callPostBack")
{
if (eventArgument == "inside"){
//do something
}
else if(eventArgument == "outside")
{
//do something
}
}
else
{
// set the button click
btnclick.Attributes.Add("onClick", "isIFrame();");
}
}
以下链接可以帮助您获得更多想法。
答案 2 :(得分:0)
在javascript文件或脚本中添加:
function SetHiddenVariable()
{
document.getElementById(inpHide).value= "value";
}
<。>在.aspx中添加此标记:
<input id="inpHide" type="hidden" runat="server" />
在aspx.cs(c#文件)中添加:
anyVariable = inpHide.Value;