Git Product home page Git Product logo

showmodaldialog's Introduction

ShowModalDialog Polyfill

This is a window.showModalDialog() shim using a modal HTML5 <dialog> element and ECMAScript 6 Generators. It was tested in the latest Google Chrome with the Enable Experimental JavaScript flag enabled in chrome://flags/#enable-javascript-harmony. Just include the following HTML code before using showModalDialog function: <script src="showModalDialog.js"></script>.

Passing both window.dialogArguments and window.returnValue is supported, provided that the dialog document is on the same server as the host document.

ShowModalDialog Polyfill is using Promises, Generators, the yield keyword and the spawn function by Jake Archibald. If they are unavailable, the polyfill is using eval and JSON as a fallback, provided that statements are separated by new lines, the showModalDialog function is not nested and runs only once in a function.

Syntax

spawn(function*() {

    //statements before showing a modal dialog

    var returnValue = yield window.showModalDialog( url [, arguments, options] );

    //statements after closing a modal dialog

});

or:

function() {

    //statements before showing a modal dialog

    var returnValue = window.showModalDialog( url [, arguments, options] );

    //statements after closing a modal dialog

});

where:

  • url - a string that specifies the URL of the document to load and display;
  • arguments - a variant that specifies the arguments to use when displaying the document;
  • options - a string that specifies the dialog box style, using CSS or the following semicolon-delimited attributes: dialogHeight:???px;dialogLeft:???px;dialogTop:???px;dialogWidth:???px;

When using generators, both showModalDialog and spawn functions are Promises, so you can use their then method and yield them.

When using a fallback, the showModalDialog function throws an exception to stop executing code until the modal is closed, then it evals the remaining code of a caller function.

In order to close the dialog from inside of it, invoke parent.document.getElementsByTagName('dialog')[0].close(); provided that both documents have the same origin.

Demo

Here is a live demo. Works best in Google Chrome 37+. The Enable Experimental JavaScript flag is only required for the yield method to work.

License

ShowModalDialog Polyfill is developed by Jerzy Głowacki under Apache 2.0 License.

showmodaldialog's People

Contributors

niutech avatar xynova avatar phistuck avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.