2010-10-08 2 views
3

Я следующий контроль 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> 

У меня есть функция яваскрипта, определенный выше, это выглядит следующим образом:

<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, которая ссылается на конкретный раздел страницы. Однако, насколько я могу определить, эта функция не вызвана (если я поставил предупреждение(), то в начале ничего не приносит). Я новичок в javascript, но оглядываясь на некоторые статьи в Интернете, вы должны указать, что это должно обновить свойство src на iframe.

EDIT:

Я также попытался следующие:

<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> 
+1

Похоже, у вас есть ошибки JavaScript, например, jQuery не включен правильно, проверили ли вы свою консоль? –

ответ

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> 
2

asp.net события (например, PreRender) Дон 't применять в другом месте (например, javascript)

Предполагая, что вы используете jquery, я бы обернул это в $(), w hich является сокращением для «Выполнять следующее, как только страница загрузится достаточно, чтобы начать манипулировать им». Кроме того, элементы управления 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 (... тогда он ничего не делает. –