我有以下iframe控件(打算像facebook一样按钮):
<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>
答案 0 :(得分:2)
asp.net事件(如prerender)不适用于任何其他地方(如javascript)
假设您正在使用jquery,我会将其包装在$()中,这是“只要页面加载足够开始操作它就立即执行以下操作”的简写。另外,asp.net控件有不同的api然后dom元素,所以如果你想使用那个api你需要将它包装在scriptlet标签中
<script type="text/javascript">
$(function ()
{
var iframe = $("#likeButton");
var newSrc = iframe.attr("src");
newSrc += encodeURIComponent(location.href) + "<%= lblKey.Text %>";
iframe.attr("src", newSrc);
});
</script>
答案 1 :(得分:0)
您是否考虑过使用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>