【问题标题】:JS function call from C# doesn't work来自 C# 的 JS 函数调用不起作用
【发布时间】:2018-03-09 08:21:15
【问题描述】:

我尝试从 CodeBehind (C#) 调用 JS 函数:

function goToBottom() {
        window.scrollTo(0, document.body.scrollHeight);
    }

当我直接从我的 asp.net 调用它时,该函数起作用。 我试过了,但它不起作用......:

 Page.ClientScript.RegisterStartupScript(this.GetType(), "goBot", "goToBottom()", true);

【问题讨论】:

  • make action before in C#。我不知道这意味着什么......
  • 我编辑了我的帖子
  • 一些需要检查的事情:你看到源代码中呈现的脚本了吗?你在上面设置断点了吗?您检查浏览器控制台是否有错误?
  • 是的,我在源代码中看到了脚本,并在上面设置了断点,但我不知道为什么它不起作用。浏览器控制台中不显示任何内容
  • 但是函数是调用的,我可以用断点的那个

标签: javascript c# asp.net webforms


【解决方案1】:

RegisterClientScriptBlockRegisterStartupScript 不会“调用”代码或函数,它们只是将代码添加到页面; RegisterClientScriptBlock 将脚本添加到页面顶部——因此它可能看不到所有的 html,因为它没有加载; RegisterStartupScript 将脚本添加到页面底部——因此所有 html 都可供它使用。

如果你想在页面加载时向下滚动,把它从功能中拿出来:

// this will run the *first time* the page loads.
window.scrollTo(0, document.body.scrollHeight); // no function.

如果您想通过点击调用它,请使用函数:

function goToBottom() {
    window.scrollTo(0, document.body.scrollHeight);
}

从 javascript 调用代码是另一个问题。以前有人问过。搜索网站或开始另一个问题。

【讨论】:

  • 此外,Jeroen 指向“不同服务器端方法”的链接可能会对您有所帮助(使用 jquery)。 (参见原帖中的 cmets。)
猜你喜欢
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多