ASP.NET中的JavaScript事件处理程序

时间:2010-10-08 12:19:28

标签: javascript jquery facebook asp.net-2.0

我有以下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>

2 个答案:

答案 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>