2010-04-17 3 views
3

뒤에 코드에서 나는 MP3 플레이어를 보여줍니다 MasterPage에 넣어이 기능이 있습니다JS는 페이지 내에서 작동하지만

<script type="text/javascript"> 
    $(document).ready(function() { 
     var stageW = 500; 
     var stageH = 216; 
     var cacheBuster = Date.parse(new Date()); 

     var flashvars = {}; 
     var params = {}; 

     params.bgcolor = '#F6F6F6'; 
     params.allowfullscreen = 'true'; 


     flashvars.stageW = stageW; 
     flashvars.stageH = stageH; 

     flashvars.pathToFiles = ''; 

     flashvars.settingsPath = '../mp3player/mp3player_settings.xml'; 
     flashvars.xmlPath = '<%# getRestXmlPlayerUrl() %>'; 

     flashvars.keepSelected = 't'; 
     flashvars.selectedWindow = '4'; 
     flashvars.slideshow = 't'; 

     flashvars.imageWidth = '130'; 
     flashvars.imageHeight = '130'; 

     swfobject.embedSWF('swf/preview.swf?t=' + cacheBuster, 'myContent', stageW, stageH, '9.0.124', 'swf/expressInstall.swf', flashvars, params); 
    }); 
    </script> 

모두 잘 작동합니다. 이

protected void Page_PreRender(object sender, EventArgs e) 
    { 
    Type cstype = this.GetType(); 
    String csnameForPlayer = "applyStyleToMp3Player"; 
     if (!Page.ClientScript.IsClientScriptBlockRegistered(cstype, csnameForPlayer)) 
     { 
      StringBuilder cstextForPlayer = new StringBuilder(); 
      cstextForPlayer.Append(" $(document).ready(function() { " 
    + " var stageW = 500;" 
    + " var stageH = 216;" 
    + " var cacheBuster = Date.parse(new Date());" 

    + " var flashvars = {};" 
    + " var params = {};" 

    + " params.bgcolor = '#F6F6F6';" 
    + " params.allowfullscreen = 'true';" 


    + " flashvars.stageW = stageW;" 
    + " flashvars.stageH = stageH;" 

    + " flashvars.pathToFiles = '';" 

    + " flashvars.settingsPath = '../mp3player/mp3player_settings.xml';" 
    + " flashvars.xmlPath = '<%# getRestXmlPlayerUrl() %>';" 

    + " flashvars.keepSelected = 't';" 
    + " flashvars.selectedWindow = '4';" 
    + " flashvars.slideshow = 't';" 

    + " flashvars.imageWidth = '130';" 
    + " flashvars.imageHeight = '130';" 

    + " swfobject.embedSWF('swf/preview.swf?t=' + cacheBuster, 'myContent', stageW, stageH, '9.0.124', 'swf/expressInstall.swf', flashvars, params);" 
    + "}); "); 
     ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), csnameForPlayer, cstextForPlayer.ToString(), true); 
    } 
} 

음을 : 하지만, 난 업데이트 패널 페이지에 대한 몇 가지 아약스을 가지고 있기 때문에, 렌더링되지에서 플래시가 아약스 요청이 발생 그래서이 기능을 등록해야합니다 그리고 난 이런 식으로 뭔가를 시도했다 작동하지 않습니다. 플래시 플레이어가 더 이상 나타나지 않으므로 cstextForPlayer에서 문제가 있다고 생각합니다.

나는 그것을 이해하기 위해 1 시간 이상을 소비했지만 실패했습니다.

누구에게이 문제가 표시됩니까?

미리 감사드립니다.

+0

html 출력을주세요! –

답변

3

나는 솔직히 코드 숨김에 대해 많이 알고 있지만,이 행하지 않습니다

+ " flashvars.xmlPath = '<%# getRestXmlPlayerUrl() %>';" 

가 ... 문제가 될 가능성이 보인다. 그럴 필요가 없습니다 :

+ " flashvars.xmlPath = '" + getRestXmlPlayerUrl() + "';" 

... 아니면 뭔가?

+0

음 ... 당신은 오늘의 영웅입니다 :) 고마워요, 작동합니다! –

+0

@ 크리스티안 : 우수. :-) –

3

<%# getRestXmlPlayerUrl() %>은 문제를 일으키는 부분입니다. RegisterStartupScript에서 사용하면 값을 반환하지 않지만 하드 코드됩니다.

function embedPlayer(xmlPath) { 
    var stageW = 500; 
    var stageH = 216; 
    var cacheBuster = Date.parse(new Date()); 

    var flashvars = {}; 
    var params = {}; 

    params.bgcolor = '#F6F6F6'; 
    params.allowfullscreen = 'true'; 


    flashvars.stageW = stageW; 
    flashvars.stageH = stageH; 

    flashvars.pathToFiles = ''; 

    flashvars.settingsPath = '../mp3player/mp3player_settings.xml'; 
    flashvars.xmlPath = xmlPath; 

    flashvars.keepSelected = 't'; 
    flashvars.selectedWindow = '4'; 
    flashvars.slideshow = 't'; 

    flashvars.imageWidth = '130'; 
    flashvars.imageHeight = '130'; 

    swfobject.embedSWF('swf/preview.swf?t=' + cacheBuster, 'myContent', stageW, stageH, '9.0.124', 'swf/expressInstall.swf', flashvars, params); 
} 

이것은 당신의 서버 측을 단순화하는 것입니다 : 이제 대신 C# 및 자바 스크립트 난 당신이 함수에이 스크립트를 외부화 추천 할 것입니다 혼합의 모든 고통을 겪고, 그것은 옳은 일에 적합한 도구를 사용하는 것이 좋습니다 간단히 이전 함수를 호출하고 xml 경로를 인수로 전달하는 코드 :

+0

동일한 코드를 반복하지 않는 것에 대해 감사드립니다. –

+1

반복 코드에 관한 것이 아니며, 코드를 반복하지 않은 경우에는 적절한 코드가 있어야합니다. 예를 들어 자바 스크립트 코드를 js 파일에 보관하면 웹 애플리케이션은 자동으로 캐싱, gzip 압축 등의 이점을 누리게됩니다.이 코드를 C# 코드에 넣으면 아약스 요청이 더 커지고 최적화되지 않습니다. –

관련 문제