Использование функции JavaScript для обновления стилей в ASP.Net - PullRequest
0 голосов
/ 12 января 2012

Хорошо, у меня есть приложение Silverlight 4 на странице с парой баннеров. В зависимости от некоторых переменных в приложении Silverlight мне нужно показать один из баннеров и переместить приложение Silverlight так, чтобы оно совпало с нижней частью баннера. Для этого я использую HtmlPage.Window.Invoke ("MethodToShowTheBannerIWant"). У каждого баннера есть своя собственная функция, которая пытается показать правильный баннер и правильно расположить приложение. Что-то вроде

  function ShowFirstBanner() {
        FirstBannerStyle.style.display = 'block';
        SilverlightAppStyle.style.marginTop = '120px';
        SilverlightAppStyle.style.height = '495px';
    }

Каждый баннер выглядит как

   <table id="FirstBannerStyle"  style="position:absolute;top:0px;left:0px;display:none;height:50px;" width=100% border="0" cellpadding="0">
<tr> 
  <td><img src="http://www.bannerimageurl.jpg" usemap="#Map2" border="0"></td> </table>

с такой картой

  <map name="Map2"><area shape="poly" coords="763,19,769,91,985,92,981,69" href="http://www.xxxxxxx.com/cal.htm" target="_self" />
         <area shape="rect" coords="11,73,88,89" href="http://www.xxxxxxx.com/index.htm" target="_self">
         <area shape="rect" coords="121,70,186,88" href="http://www.xxxxxxx.com/courses.htm" target="_self">
         <area shape="rect" coords="217,70,327,90" href="http://www.xxxxxxx.com/ts.htm">
         <area shape="rect" coords="365,70,521,91" href="http://www.xxxxxxx.com/po.htm">
         <area shape="rect" coords="556,71,618,91" href="http://www.xxxxxxxx.com/au.htm" target="_self">
         <area shape="rect" coords="655,72,726,91" href="http://www.xxxxxxx.com/CU/index.htm" target="_self">
      </map>

и область приложения Silverlight выглядит следующим образом

  <form id="form1" runat="server" style="height:100%">
<div id="silverlightControlHost" style="height:100%;text-align:center">
    <object data="data:application/x-silverlight-2,"  type="application/x-silverlight-2" width="100%" height="100%">
      <param name="source" value="ClientBin/XXX.XXX.XXX.xap"/>
      <param name="onError" value="onSilverlightError" />
      <param name="background" value="white" />
      <param name="minRuntimeVersion" value="4.0.50826.0" />
      <param name="autoUpgrade" value="true" />
      <param name="InitParams" value=<%=System.Configuration.ConfigurationManager.AppSettings.GetValues(0).FirstOrDefault()%>/>
      <param name="windowless" value="true" />
      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
      </a>
    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>

 <div id="InvisibleFrame"></div>    
</form>        

Проблема, с которой я столкнулся, заключается в том, что этот процесс прекрасно работает в IE8, но совсем не работает в IE9 или Firefox. Когда мой код попадает в HtmlPage.Window.Invoke ("ShowFirstBanner"), он застревает прямо там и никогда не перемещается за эту строку, но не отображает никаких сообщений об ошибках и вместо этого просто будет сидеть неопределенно долго, ожидая завершения этой команды. Если я закомментирую код с функцией, он сделает вызов и продолжит работу как обычно. Так что что-то, связанное с тем, как я обновляю стили Firefox и IE9, не нравится. У кого-нибудь есть идея, как это сделать во всех браузерах?

1 Ответ

2 голосов
/ 12 января 2012

Где "FirstBannerStyle" и "SilverlightAppStyle" определены в вашем JavaScript?

Вам нужно получить элемент по его идентификатору:

document.getElementById('FirstBannerStyle').style.display = 'block';

или если вы используете jQuery:

$('FirstBannerStyle').show()
...