4

Consider the following code:

var options = {
    title: 'Create a new Post'
    autoSize: true,
    url: url
}

SP.UI.ModalDialog.showModalDialog(options);

The code is executed from a ECB custom action and from a web part. It works fine in IE, however when i call it from the webpart in Google Chrome it gives the following error:

Uncaught TypeError: Object # has no method 'showModalDialog'

The strange thing is that when i call the exact same code (it's part of my library) from the ECB custom action it now works in Google Chrome!

I've tried calling it with

  • ExecuteOrDelayUntilScriptLoaded
  • _spBodyOnLoadFunctionNames.push("funcname")
  • LoadSodByKey("sp.ui.dialog.js", null);

Any ideas or help? It's driving me crazy!

10
  • How are you calling it from your webpart? On page load?
    – Chloraphil
    Jul 5, 2013 at 16:03
  • no, button click event. i attach to it using jquery... i understand the error, the dialog module has not been fully loaded, but i dont understand why its happening as it works with IE perfectly...
    – int32
    Jul 5, 2013 at 18:51
  • Any other errors in the console? Is the web part on the same page as the custom action?
    – Chloraphil
    Jul 5, 2013 at 19:28
  • This is a shot in the dark, but I implemented the following to fix the issue with the scrollbar not appearing in Chrome. Perhaps it's related: withinsharepoint.com/archives/256
    – Chloraphil
    Jul 5, 2013 at 19:31
  • no, no other errors. no they are not on the same page. thanks for the link, will try it out and let you know!
    – int32
    Jul 5, 2013 at 19:41

2 Answers 2

0

This is a Chrome issue with it's caching model.

Please make sure you call

LoadSodByKey("SP.UI.Dialog.js", null); 

To ensure the file is loaded.

4
  • thanks, i already tried that though and it did not work. see my initial post
    – int32
    Dec 2, 2013 at 14:03
  • This is the correct fix for the issue, where did you run this code? If it isn't working then there is something else wrong perhaps to many async calls?
    – Hugh Wood
    Dec 2, 2013 at 14:06
  • from within a Web Part (in an external js file, though).. i do agree, but i never got it to work like this in Chrome. I think thats a specific issue with Chrome, because it works with every other browser just fine, so i will mark your answer as correct anyway.
    – int32
    Dec 4, 2013 at 14:13
  • perhaps the key was wrong? You can jump into the console and take a look at the SP.SOD dictionary object
    – Hugh Wood
    Dec 4, 2013 at 14:24
0

This specified error that is encountered in Chrome browser, could be eliminated by using SP.SOD.execute(key, functionName, args) Method.

Replace the line

SP.UI.ModalDialog.showModalDialog(options);

with the

SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.