网站搜索

javascript - 类型错误:this.$E_0.getElementsByTagName 不是一个函数


我正在尝试在 SharePoint 2010 中创建一个模态对话框,但我遇到了这个错误:

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

使用 Firebug,我尝试直接使用 URL 字段而不是 HTML 字段,它没有报错。

也与此相关,SP.UI.$create_DialogOptions() 实际上是做什么的?使用它和仅仅使用一个包含选项值的字典有什么区别?

答案#1

options.html 需要一个 HTML DOM 元素,而不是普通的 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>

示例代码取自博客文章《在 SharePoint 对话框中呈现 HTML 需要 DOM 元素而不是字符串》。

同样与此相关,SP.UI.$create_DialogOptions() 实际上是做什么的?使用它和仅仅使用一个包含选项值的字典有什么区别?

当你查看文件 SP.UI.Dialog.debug.js 中 SP.UI.DialogOptions “类”的定义时,你会看到它是一个空的 JavaScript 函数。

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

我猜它在那里是为了客户端诊断目的。看看这个 SO 问题:这段 Javascript 代码是做什么的?