2011-10-14 15 views
5

Tôi đang cố gắng để tạo ra một hộp thoại modal trong SharePoint 2010, nhưng tôi nhận được lỗi này:

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

mã của tôi là:

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); 

sử dụng firebug, tôi đã thử sử dụng trường url thay vì trường html và nó không có lỗi.

cũng liên quan đến điều này, SP.UI. $ create_DialogOptions() thực sự làm gì? sự khác biệt giữa việc sử dụng nó và chỉ đơn giản là sử dụng một dict của các giá trị cho các tùy chọn của bạn là gì?

Trả lời

7

options.html đòi hỏi một phần tử HTML DOM thay vì đồng bằng mã HTML:

<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> 

Ví dụ mã lấy từ bài viết trên blog Rendering html in a SharePoint Dialog requires a DOM element and not a String.

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

Khi bạn nhìn vào định nghĩa của "lớp học" SP.UI.DialogOptions trong file SP.UI.Dialog.debug.js bạn thấy rằng nó là một sản phẩm nào chức năng javascript.

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

Tôi đoán là nó có sẵn cho mục đích chẩn đoán của khách hàng. Hãy xem câu hỏi SO này: What does this Javascript code do?

+1

yeah ... tôi đã tìm ra một vài giờ sau đó và sẽ đăng câu trả lời nhưng tôi chưa đủ đại diện :) cảm ơn vì câu trả lời cho $ create_DialogOptions câu hỏi – Nacht