online - SharePoint 2010: ¿error de JavaScript al crear el cuadro de diálogo modal?
sharepoint sdk client (4)
El problema es que la "Biblioteca" de JavaScript necesaria de SharePoint no se ha cargado. (El SharePoint 2010 JS es un buen lío y los espacios de nombres / etc. vienen de todas partes; el asunto se complica aún más con la nueva carga "bajo demanda").
La biblioteca que se debe cargar para usar la interfaz de diálogo modal SP2010 (incluidos $create_DialogOptions
y showModalDialog
) es "sp.js".
Para garantizar que se cargue "sp.js":
ExecuteOrDelayUntilScriptLoaded(function () {
// do modal dialog stuff in here (or in another function called from here, etc.)
}, "sp.js")
La función de devolución de llamada solo se invoca después de que se garantiza que se cargará "sp.js" (incluido el material SP.UI.ModalDialog
) (y que nunca se SP.UI.ModalDialog
si hay un error de carga).
Esto también podría resolverse con el uso de <ScriptLink>
a sp.js
con OnDemand
especificado, pero no puedo garantizarlo : (Creo que puede haber problemas con este enfoque, pero no recuerdo por qué no se usa en el proyecto que acabo de ver)
<SharePoint:ScriptLink runat="server" Name="sp.js" OnDemand="true" Localizable="false" />
Ver SPSOD para más detalles / información.
Feliz codificación.
Por algún motivo, el cuadro de diálogo modal de mi SharePoint no funciona correctamente. El error que recibo es esto:
- En Firefox:
SP.UI.$create_DialogOptions is not a function
- En IE: el
Object doesn''t support this property or method
Aquí está mi código:
var options = SP.UI.$create_DialogOptions();
options.width = 525;
options.height = 300;
options.url = ''/_layouts/mywork/richtexteditor.aspx'';
options.dialogReturnValueCallback = Function.createDelegate(null, function (result, value)
{
alert(result + value);
});
SP.UI.ModalDialog.showModalDialog(options);
Curiosamente, cuando inspecciono SP.UI en Firebug, no veo todos los métodos y propiedades.
NOTA: Estoy usando Webpart estándar (no visual) y no una página de aplicación.
Para mí funcionaba así: ExecuteOrDelayUntilScriptLoaded(function () {}, "sp.js")
y:
<SharePoint:ScriptLink ID="ScriptLink1" runat="server" Name="sp.js"
OnDemand="false" Localizable="false" LoadAfterUI="true"/>
Se encontró que tanto los enfoques de Adela como los del usuario166390 fallan en las IE anteriores 7-8. Parece que la página no está completamente analizada e intentó ser modificada por el iframe del diálogo y esto es malo para esos IEs. Para mi caso, necesito un cuadro de diálogo emergente automáticamente en la página de la aplicación, lo arreglé con el siguiente
<asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">
<SharePoint:SPPageManager ID="SPPageManager1" runat="server" />
<script type="text/javascript">
var ShowDialog = function () {
var options = {
url: ''/_login/default.aspx,
title: ''Title, Description, and Icon'',
width: 640,
height: 400,
dialogReturnValueCallback: function(dialogResult, returnValue) {
window.location.replace(returnValue);
}
};
SP.UI.ModalDialog.showModalDialog(options);
};
ExecuteOrDelayUntilScriptLoaded(ShowDialog, "sp.ui.dialog.js");
</script>
</asp:Content>
Esta pequeña cosa
<SharePoint:SPPageManager ID="SPPageManager1" runat="server" />
registra todos los javascripts SP.
El enfoque se encontró en los foros de MSDN .
Puede solucionar este problema utilizando un objeto genérico para la opción en lugar de la clase DialogOptions. eso significa que tienes que escribir una opción como esta:
//Using a generic object.
var options = {
title: "My Dialog Title",
width: 400,
height: 600,
url: "/_layouts/DialogPage.aspx" };
Para obtener más información sobre su uso, visite: http://msdn.microsoft.com/en-us/library/ff410058%28v=office.14%29.aspx y vea el ejemplo.