根据我所在的页面,我希望更改 javascript 函数的内容。
示例:
母版页
<script type="text/javascript">
Cufon.now();
Cufon.replace('p#characters', { fontFamily: 'Helvetica95-Black' });
</script>
页面A
<script type="text/javascript">
Cufon.now();
Cufon.replace('p#characters', { fontFamily: 'Helvetica95-Black' });
Cufon.replace('p#others', { fontFamily: 'Helvetica95-Black' });
</script>
因为我不想重复代码,所以我正在寻找解决方案。我想也许我可以像这样使用像 ContentPlaceHolder 这样的东西(但它不起作用):
<script type="text/javascript">
Cufon.now();
Cufon.replace('p#characters', { fontFamily: 'Helvetica95-Black' });
<asp:ContentPlaceHolder id="cphJS" runat="server" />
</script>
有什么办法可以解决这种问题吗?
更新
我想避免的是这样的代码:
// Add by MasterPage
<script type="text/javascript">
Cufon.now();
Cufon.replace('p#characters', { fontFamily: 'Helvetica95-Black' });
</script>
// Add by Page A
<script type="text/javascript">
Cufon.now();
Cufon.replace('p#others', { fontFamily: 'Helvetica95-Black' });
</script>
// Add by Page B
<script type="text/javascript">
Cufon.now();
Cufon.replace('p#main', { fontFamily: 'Helvetica95-Black' });
Cufon.replace('p#menu', { fontFamily: 'Helvetica95-Black' });
</script>
因为那种代码可以工作,但它不是清洁的方式。我宁愿有这样的东西:
<script type="text/javascript">
Cufon.now();
Cufon.replace('p#characters', { fontFamily: 'Helvetica95-Black' });
Cufon.replace('p#others', { fontFamily: 'Helvetica95-Black' });
Cufon.replace('p#main', { fontFamily: 'Helvetica95-Black' });
Cufon.replace('p#menu', { fontFamily: 'Helvetica95-Black' });
</script>
结果是一样的。我只发现第二个输出更干净。
最佳答案
为什么不简单地在脚本标签之外的内容占位符中添加附加代码?
所以,你会得到类似的东西:
<head>
<script type="text/javascript">
// do some stuff
</script>
<asp:ContentPlaceHolder runat="server" id="someid" />
</head>
...
或者,您可以在页面的早期将函数收集到数组中,然后像这样稍后执行它们:
在
中:var callbacks = [];
function addCallback(arg) {
callbacks.push(arg);
}
在其他地方:
addCallback(function() {
...
});
然后在页面底部,就在 之前:
for (var i = 0; i < callbacks.length; i++) {
var c = callbacks[i];
if (c && c instanceof Function)
c();
}
您能否提供有关要求的更多详细信息?例如:上面的代码应该做什么,是否必须一次全部执行,是否依赖于创建的局部变量,是否必须在特定时间运行等。
编辑: 在新的 MVC 项目中使用内容占位符似乎对我来说效果很好。 Intellisense 没有接收到它,但它呈现正确。以下是我的代码。
在母版页中:
...
<script type="text/javascript">
var inTheMasterPage;
<asp:ContentPlaceHolder runat="server" id="js1">
</asp:ContentPlaceHolder>
</script>
...
在页面中:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content runat="server" ContentPlaceHolderID="js1">
var inThePage;
</asp:Content>
...
以及呈现的 HTML:
<script type="text/javascript">
var inTheMasterPage;
var inThePage;
</script>
</head>
关于javascript - Asp.Net Mvc - ContentPlaceHolder- Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226032/