在母版页上为整个网站设置单个 Javascript 的情况下,如何仅针对一个(或 2)个子页面执行 JS 函数

发布于 2024-10-03 08:02:46 字数 790 浏览 3 评论 0原文

我正在开发一个仅使用单个 Javascript 的 .net 网站(到目前为止)。因为我被告知单一 JS 可以获得最佳性能等。首先,关于 JS 框架有什么建议,有什么前沿文章吗?

其次,当我尝试为子页面调用 JS 函数时遇到了一些问题。我尝试过类似的操作:

1.我想在页面加载后执行一个函数(即ispostback)

$("#div_ID").ready

2.在页面回发后执行一个函数(更新面板中的下拉列表回发)

pgRegMgr.add_beginRequest(BeginHandler)

function BeginHandler()
{$(".DDL_ClassName").change(function{.....});
}

两者都不起作用。系统无法识别 div 或 DDL。 我无法在“master”JS 中的 $(document).ready 或 .add_beginReqest() 中设置该函数,这会导致其他页面出现错误。有什么建议吗?或者我必须移动到多个 JS 文件吗?

此外,我没有编写内联 javascript,而是使用

$(document).ready(function{textchange});

function textchange(function { $(".textbox_class").change(.....)});

它适用于 Chrome 等,但不适用于 IE 7(也适用于 mb IE8)

任何人都可以帮助我吗?

多谢。

I am working on a .net website with only a single Javascript (so far). Because I have been told Single JS get best performance etc. firstly, any suggestions on JS frameworks , any cutting-edged articles?

Secondly, I met some problems when I was trying to invoke JS function just for a child page. I tried something like :

1.I want to exe a function after a page_load (i.e. ispostback)

$("#div_ID").ready

2.exe a function after page postback (a dropdownlist post back in updatepanel)

pgRegMgr.add_beginRequest(BeginHandler)

function BeginHandler()
{$(".DDL_ClassName").change(function{.....});
}

Both not work. System won't recognized the div or DDL.
I'm not able to set the function in $(document).ready or .add_beginReqest() in the 'master' JS, it will cause errors on other pages. Any suggestions? or do I have to move to multiple JS files?

Moreover, instead of writing inline javascript, I'm using

$(document).ready(function{textchange});

function textchange(function { $(".textbox_class").change(.....)});

It works in Chrome etc, but not for IE 7 (mb IE8 as well)

Can anyone help me?

Thanks a lot.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

野稚 2024-10-10 08:02:46

有几种不同的方法可以做到这一点。

就我个人而言,我不认为每个页面上都有 $(document.ready() 有什么问题。将所有函数保存在一个 .js 文件中,但只包含一些简单的初始化函数非常方便(而且仍然是轻量级的)在这种情况下,您将执行相同的操作:

//On the single page you want the function called on
$(document.ready(function() {
     textchange();
});

如果您不想在子页面上使用 $(document).ready(),则可以在 .js 文件中使用 if 语句。使用 window.location.pathname 获取文件的路径,并根据子页面的路径进行检查您的代码可能如下所示:

//In your main .js file
$(document).ready(function() {
     if(window.location.pathname == "/childPage.htm")
          textchange();
});

There's a couple different ways you could do this.

Personally, I don't see anything wrong with having a $(document.ready( on each page. Keep all your functions in a single .js file, but it is pretty handy (and still lightweight) to just have some simple init functions on each page. In that case you would do the same thing you had:

//On the single page you want the function called on
$(document.ready(function() {
     textchange();
});

If you don't want to have a $(document).ready() on your child page, you could use an if statement in your .js file. Use window.location.pathname to get the path to your file, and check this against what it should be for your child page. Your code might look like this :

//In your main .js file
$(document).ready(function() {
     if(window.location.pathname == "/childPage.htm")
          textchange();
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文