2012-03-20 84 views
4

我有一個嵌入了YouTube視頻的IFrame。我想創建一個文本框,其中用戶(管理員)可以粘貼視頻的新src(URL),IFrame採用新的來源。以下是我迄今爲止:如何動態設置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不顯示任何東西。

+1

選擇合適的工作合適的工具 - 的JavaScript客戶端交互。 – marko 2012-03-20 13:11:25

+2

可能重複[動態設置iframe src](http://stackoverflow.com/questions/6000987/dynamically-set-iframe-src) – durron597 2015-08-25 15:22:30

回答

2

您需要在客戶端瀏覽器上進行此操作,而不是服務器端。我建議是這樣的:

// (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; 
} 

希望這有助於 - 這是從我的頭頂了,所以不要挖苦我,如果它不工作第一次!

+0

是的,用javascript來做。 – marko 2012-03-20 13:10:41

+0

糟糕 - 糾正了一個錯字! – coalvilledave 2012-03-20 13:15:32

+0

我從來沒有習慣使用js :)我想我必須..謝謝guyz – Pepys 2012-03-20 13:18:26

5

其他回答不回答這個問題,他們提供了一個替代方案。問題是如何從C#設置iFrame src。我會在這裏回答。

我都是「適合工作的工具」,並且自己使用這個口頭禪 - 但只有當其他工具是「錯誤的」時。這在這裏還沒有確定。有人可以提供一個良好的技術原因,爲什麼這不應該在代碼隱藏?

我認爲@Pepys遇到的問題可能是由於他尚未提供的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";