我遇到了一些问题,我做了一些挖掘,但努力想出一个确凿的答案/修复。
基本上,我有一些 javascript(由第 3 方创建)对页面元素做了一些非常棒的东西,使它们看起来很漂亮。该代码在单页(即没有母版)上效果很好,但是,当我尝试将效果应用于母版中的内容页面时,它不起作用。
简而言之,我有一个包含主要脚本参考的母版页。所有页面都将使用该脚本,但传递给它的参数对于内容页面会有所不同。
母版页脚本参考
<script src="scripts.js" language="javascript" type="text/javascript" />
单页
<script>
MakePretty("elementID");
</script>
如您所见,我需要每个页面中的引用(因此它在主页面中),但我想要“MakePretty”的实际元素将根据内容而改变。
内容页面
现在,由于内容页面没有<head>
元素,我一直在使用以下代码将其添加到母版页<head>
元素:
HtmlGenericControl ctl = new HtmlGenericControl("script");
ctl.Attributes.Add("language", "javascript");
ctl.InnerHtml = @"MakePretty(""elementID"")";
Master.Page.Header.Controls.Add(ctl);
现在,这行不通。但是,如果我用简单的东西替换alert("HI!")
,一切正常。所以代码被添加好了,它似乎并不总是根据它在做什么来执行..
现在,经过一些挖掘,我了解到内容页面的Load
事件是在母版页之前引发的,这可能会产生影响,但是,我认为页面上的 javascript 是一次全部加载/运行的?
如果这是一个愚蠢的问题,请原谅我,但我对使用 javascript 还是比较陌生,尤其是在母版页场景中。
如何让内容页面调用母版页中引用的 javascript 代码?
感谢您对这些人的任何/所有帮助,您将真正帮助我解决这个工作问题。
笔记:
RegisterStartupScript
之类的东西似乎在任何层面都不起作用..- 即使在 MasterPage 环境中,控件 ID 的设置也很好,并且按预期呈现。
抱歉,如果其中任何一个不清楚,我真的很累,所以如果需要的话,如果需要重新措辞/澄清,请发表评论。