JavaScript的事件处理程序在ASP.NET
问题描述:
我有以下的iframe控制(旨在是像按钮一个Facebook):JavaScript的事件处理程序在ASP.NET
<iframe id="likeButton"
src="http://www.facebook.com/plugins/like.php?href="
scrolling="no"
frameborder="0"
style="border:none; overflow:hidden;
width:450px; height:80px;"
onprerender="setupLink()"
</iframe>
我有高于此定义的JavaScript功能如下:
<script type="text/javascript">
function setupLink()
{
var iframe = $("#likeButton");
var newSrc = iframe.attr("src");
newSrc += encodeURIComponent(location.href) + lblKey.Text;
iframe.attr("src", newSrc);
};
</script>
lblKey是ASP.NET页面上引用页面特定部分的标签。但是,据我可以确定,这个函数不会被调用(如果我在开始时提醒alert(),它不会带来任何提示)。我是新来的JavaScript,但环顾网络上的一些文章将表明,这应该更新iframe上的src属性。
编辑:
我也曾尝试以下操作:
<script type="text/javascript" >
$(function() {
var iframe = $("#likeButton");
var newSrc = iframe.attr("src");
newSrc += encodeURIComponent(location.href) + '<%= lblKey.Text %>';
iframe.attr("src", newSrc);
});
</script>
不工作,但同样没有:
<script type="text/javascript" >
$(function() {
alert('Hello');
});
</script>
答
你有没有使用onload事件,并传递给一个参考考虑iframe?
<script type="text/javascript">
function change_source(iframe)
{
if (iframe.src.indexOf('facebook') < 0)
{
iframe.src = 'http://www.facebook.com/plugins/like.php?href=<%= lblKey.Text %>';
}
}
</script>
HTML这样的事情...
<iframe id="likeButton"
src="about:blank"
scrolling="no"
frameborder="0"
style="border:none; overflow:hidden;
width:450px; height:80px;"
onload="change_source(this);"
</iframe>
答
asp.net事件(如预渲染)唐不适用于其他任何地方(如JavaScript)
假设你正在使用jquery,我会将它包装在一个$(),w这是“一旦页面加载足够开始操作就执行以下内容的简写”。此外,asp.net控件有不同的API,然后DOM元素,所以如果你想使用这个API,你需要将它包装在一个小脚本标签
<script type="text/javascript">
$(function()
{
var iframe = $("#likeButton");
var newSrc = iframe.attr("src");
newSrc += encodeURIComponent(location.href) + "<%= lblKey.Text %>";
iframe.attr("src", newSrc);
});
</script>
+0
谢谢你。但是如果我把警报(newSrc); iframe.arrt之上(...然后它什么都不做。 – 2010-10-08 12:44:05
听起来像是你有JavaScript错误,例如没有正确包含jQuery,你有没有检查你的控制台? – 2010-10-17 10:52:15