2011-10-14 54 views
5

我試圖創建於2010年的SharePoint模式對話框,但我得到這個錯誤:

TypeError: this.$E_0.getElementsByTagName is not a function 

我的代碼是:

var options = SP.UI.$create_DialogOptions(); 
options.html = '<div class="ExternalClass23FFBC76391C4EA5A86FC05D3D9A1904"><p>RedConnect is now available.​</p></div>'; 
options.width = 700; 
options.height = 700; 
SP.UI.ModalDialog.showModalDialog(options); 

使用螢火蟲,我試着簡單地使用url字段而不是html字段,它沒有給出錯誤。

也與此有關,SP.UI. $ create_DialogOptions()實際上做了什麼?使用它和簡單使用值的字典之間有什麼區別?

回答

7

options.html需要一個HTML DOM元素而不是普通的HTML代碼:從博客帖子Rendering html in a SharePoint Dialog requires a DOM element and not a String採取

<script> 

    function ShowDialog() 
    { 
    var htmlElement = document.createElement('p'); 

    var helloWorldNode = document.createTextNode('Hello world!'); 
    htmlElement.appendChild(helloWorldNode); 

    var options = { 
     html: htmlElement, 
     autoSize:true, 
     allowMaximize:true, 
     title: 'Test dialog', 
     showClose: true, 
    }; 

    var dialog = SP.UI.ModalDialog.showModalDialog(options); 
    } 

</script> 

<a href="javascript:ShowDialog()">Boo</a> 

實施例的代碼。

also related to this, what does SP.UI.$create_DialogOptions() actually do? what is the difference between using it and simply using a dict of values for your options

當你在文件中看看SP.UI.DialogOptions「類」的定義SP.UI.Dialog.debug.js你看到的是它是一個空的JavaScript功能。

SP.UI.DialogOptions = function() {} 
SP.UI.$create_DialogOptions = function() {ULSTYE:; 
    return new SP.UI.DialogOptions(); 
} 

我的猜測是,它存在客戶端診斷目的。看看這個SO問題:What does this Javascript code do?

+1

是啊...我想了幾個小時後,並打算髮布答案,但我還沒有足夠的代表:)謝謝雖然爲$ create_DialogOptions的答案題 – Nacht

相關問題