代码之家  ›  专栏  ›  技术社区  ›  Paul Michaels

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

  •  3
  • Paul Michaels  · 技术社区  · 15 年前

    我有以下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还不熟悉,但是看看web上的一些文章就会发现这应该更新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 回复  |  直到 15 年前
        1
  •  0
  •   JayTee    15 年前

    您是否考虑过使用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>
    
        2
  •  2
  •   Matt Briggs    15 年前

    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>