tableau / extensions-api

Extensions API sample code and developer docs.
http://tableau.github.io/extensions-api
MIT License
268 stars 251 forks source link

Extension API not working on IE11 #187

Closed iliass3 closed 2 years ago

iliass3 commented 5 years ago

Hello,

I am facing a problem using the tableau extension api V 1.0.0, I am working on an extension that uses a Popup for configuration, the popup uses the api to retrieve data from the dashboard. On tableau desktop the extension works fine, on the following browsers, the extension works fine as well : Firefox V64.0.2, Chromium Version 47.0.2526.0, Google chrome V71, Microsoft Edge.

When tested under IE11, The popup shows empty : only the html components are displayed, it seems that the popup gets stuck at the initialization of the extension, when I refresh the page i get the following output : image

it appears that this error comes from the check test used on the extensions API :

function doCrossFrameBootstrap(thisWindow, internalContractVersion) {
    return new Promise(function (resolve, reject) {
        var parent;
        // Normally, we are running inside an iframe.  The exception to this is
        // when we are running as an extension inside a dialog as part of the UINamespace
        // functionality.  In that case, we want the opener of this window rather than the parent.
        if (!inIframe(thisWindow)) {
            parent = thisWindow.opener;
        }
        else {
            parent = thisWindow.parent;
        }
        if (!parent) {
            reject('This extension is not running inside an iframe, desktop, or popup window. Initialization failed.');
        }
...

I tried to set the window.opener myself (as i know the opening window) but got another error : Unhandled promise rejection ... the object doesn't support property or method postMessage

image

which originates from the following code :

var onUnhandled = function (promise) {
  task.call(global, function () {
    var value = promise._v;
    var unhandled = isUnhandled(promise);
    var result, handler, console;
    if (unhandled) {
      result = perform(function () {
        if (isNode) {
          process.emit('unhandledRejection', value, promise);
        } else if (handler = global.onunhandledrejection) {
          handler({ promise: promise, reason: value });
        } else if ((console = global.console) && console.error) {
          console.error('Unhandled promise rejection', value);
        }
      });
      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
    } promise._a = undefined;
    if (unhandled && result.e) throw result.v;
  });
};

Thank you in advance

johnDance commented 5 years ago

Hello! Full support for IE11 came in Tableau version 2018.2.3, and 2018.3. You can find your server version by clicking on the i icon in the header. If your server version is one of these versions or later, please let us know. Thanks, John

iliass3 commented 5 years ago

Thank you JohnDance for your reply.

I am using Tableau 2018.3

image

johnDance commented 5 years ago

Looks like we have some investigation to do. Can you share what extension API you are using in your popup that feels like the blocking call? Thank you, John

iliass3 commented 5 years ago

I am using the following extension : tableau-extensions-1.0.0

tableau-extensions-1.0.0.js.zip

Thank you

iliass3 commented 5 years ago

Any news about the issue ?

vijaymedipelli commented 5 years ago

Hi John

I am also encountering similar issue, our Tableau Server is on 2018.3.1 and using i am using Export to Excel (TheInformationLab_ExportAll.trex) which works fine in Chrome, but doesn't work on IE 11. Our company standard browser is IE not all users uses Chrome. Request your inputs on above issue is great help to us.

Thanks.. Vijay

jacksjp commented 5 years ago

Hi

I am also encountering similar issue, my server version is 2019.1. The extension works fine on chrome and on IE there is no error and only the html elements are loaded. I am using extension 1.1.0 let me know about the alternatives

Thanks

bggoxp commented 5 years ago

Hello, I'm also developing an extension and I'm having issues with IE. The issue you are having seems to be related to promise. Have you tried using polyfill?

quickest way, just had this on the index. The issue that I'm having is related to dialogs. I have the extension working as expected, although when I use displayDialogAsync, the dialog pops open and renders the html but does not run the initializeDialogAsync. Does anyone have any idea?
johnDance commented 5 years ago

Vijay: Unfortunately, it looks like Export All uses syntax that is not supported in IE11. We will reach out to the author.

jacksjp: As mentioned, polyfills can help. Can you open the debugger and look for errors in the console. Often that will pinpoint the problem.

bggoxp: Are you using arrow functions? Does the console say anything helpful?

John

bggoxp commented 5 years ago

Hey John, thanks. I opened another issue (you already commented there) Thanks!

https://github.com/tableau/extensions-api/issues/215

vijaymedipelli commented 5 years ago

Thanks John for your reply...

DataPalla commented 4 years ago

@johnDance Is there any update on the Export all extension working on IE11 ? Please help - Thank you

johnDance commented 4 years ago

@DataPalla - I'm checking with our developer evangelists.

johnDance commented 4 years ago

@DataPalla - We have reached out to the developer, but have not heard anything back. Sorry.

bcantoni commented 2 years ago

Closing out based on age. If this is still an issue, please reopen with a comment on the latest status and we can revisit.

Also, in 2020 Tableau officially stopped supporting IE11, so these types of issues would probably not be fixed