Как мне динамически установить источник IFrame? - PullRequest
4 голосов
/ 20 марта 2012

У меня есть IFrame для встраивания видео на YouTube. Я хочу создать текстовое поле, в котором пользователь (администраторы) может вставить новый src (URL) видео, а IFrame получит новый источник. Вот что у меня есть:

protected void Edited_Click(object sender, EventArgs e)
    {
       // HtmlControl frame1 = (HtmlControl)this.FindControl("frame1");
        string url = TextBox1.Text;
        frame1.Attributes["src"] = url;

    }

А в HTML-коде есть Iframe:

<div id="video">
    <iframe title="YouTube video player" runat="server" width="420" 
            frameborder="1" style="height: 265px; float: left; 
            text-align: center;" id="frame1" 
        name="frame1" align="middle"></iframe>
       <br />
       </div>

Я не устанавливаю src в начале, но когда я вставляю URL в текстовое поле и нажимаю кнопку, Iframe ничего не отображает.

Ответы [ 2 ]

5 голосов
/ 05 апреля 2012

Другие ответы не отвечают на вопрос, они предоставляют альтернативу.Вопрос в том, как установить iFrame src из C #.Я отвечу на это здесь.

Я за «правильные инструменты для работы» и сам много использую эту мантру, но только тогда, когда другие инструменты «неправильны».Это не было установлено здесь.Может ли кто-нибудь предоставить хорошую техническую причину, почему это не должно быть сделано в коде позади?

Я думаю, что проблема, с которой сталкивается @Pepys, может быть связана с чем-то в URL, который он еще не предоставил.Например, возможно, его URL содержит амперсанды или другие символы, которые необходимо экранировать.

Следующий код прекрасно работает для меня:

excelframe.Attributes["src"] =
  @"https://r.office.microsoft.com/r/rlidExcelEmbed?"
+ @"su=-0000000000"
+ @"&Fi=zzzzzzzzzzzz!111"
+ @"&ak=x%3d9%26x%3d9%26x%3d!zzzzzzzzzz"
+ @"&kip=1"
+ @"&AllowTyping=True"
+ @"&ActiveCell='sheet1'!C3"
+ @"&wdHideGridlines=True"
+ @"&wdHideHeaders=True"
+ @"&wdDownloadButton=True";
2 голосов
/ 20 марта 2012

Это необходимо сделать в браузере клиента, а не на стороне сервера. Я бы предложил что-то вроде:

// (Add inside script element in head of page html)

window.onload = function() {
    document.getElementById('<id of input>').onchange = function() {
        changeFrameUrl();
    }
};

function changeFrameUrl() {
        var inputVal = document.getElementById('<id of input>').value;
        document.getElementById('<id of iframe>').src = inputVal;
}

Надеюсь, это поможет - это не в моей голове, так что не теряйте меня, если это не сработает в первый раз!

...