tags:

views:

221

answers:

5

Hello,

I'm using "Jquery UI 1./Dan Wellman/Packt Publishing" to learn JQuery UI. I'm working on the 'Dialog widget' chapiter.

After I've completed a series of exercises in order to build a Dialog widget (using Google Chrome), I then tried my work with Internet Explorer and Firefox.

The result has been disappointing.

  • Chrome was perfet
  • With Internet Explorer, (1) the title of the Dialog widget did not appear, (2) The location of the dialog widget was not correct (given the position: ["center", "center"]). It was rather offset toward left.
  • With Firefox, the location was respected. However, only the outer container was visible. the content was missing, just a blank container.
  • Also using Option Show:true and Hide:true did only work with Chrome.

I wonder now if JQuery UI was meant to be used only with Google Chrome. I just think that I might be missing some directives to make it work with major browsers (as the author claimed in his book).

Here's the code. Since, I'm using ASP.NET MVC, certain codes, such as the element to the css, do not appear. But, for the rest, all the functioning code is bellow.

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<p>
    The goal of this tutorial is to explain one method of creating 
    model classes for an ASP.NET MVC application. In this tutorial, 
    you learn how to build model classes and perform database access 
    by taking advantage of Microsoft LINQ to SQL. In this tutorial, 
    we build a basic Movie database application. We start by creating 
    the Movie database application in the fastest and easiest way possible. 
    We perform all of our data access directly from our controller actions.
</p>
<div style = "font-size:.7em" id = "myDialog" title = "This is the title">
    In this tutorial -- in order to illustrate how you can build model classes
    -- we build a simple Movie database application. 
    The first step is to create a new database. Right-click the
    App_Data folder in the Solution Explorer window and select the menu option
    Add, New Item. Select the SQL Server Database template, give it the name
    MoviesDB.mdf, and click the Add button (see Figure 1).
</div>
</asp:Content> 

<asp:Content ID="Content3" ContentPlaceHolderID="ScriptContent" 
runat="server">

<script src="../../Content/development-bundle/jquery-1.3.2.js"
type="text/javascript"></script>
<script src="../../Content/development-bundle/ui/ui.core.js"
type="text/javascript"></script>
<script src="../../Content/development-bundle/ui/ui.dialog.js"
type="text/javascript"></script>
<script src="../../Content/development-bundle/ui/ui.draggable.js" 
type="text/javascript"></script>
<script src="../../Content/development-bundle/ui/ui.resizable.js"
type="text/javascript"></script>
<script 
src="../../Content/development-bundle/external/bgiframe/jquery.bgiframe.js"
type="text/javascript"></script>

<script type = "text/javascript">
    $(function() {
        var execute = function() { }
        var cancel = function() { }
        var dialogOpts = {
            position: ["center", "center"],
            title: '<a href="/Home/About">A link title!<a>',
            modal: true,
            minWidth: 500,
            minHeight: 500,

            buttons: {
                "OK": execute,
                "Cancel": cancel
            },
            show:true,
            hide: true,
            bgiframe:true

        };
        $("#myDialog").dialog(dialogOpts);
    });
</script>

Thank for helping.

EDIT

I've re-done the same exercise yesterday. From the beginning to the end, each time I've introduced a behavior, I've tested my work in all 3 browsers (IE, Firefox, Chrome).

  • Everything works until I add option Show and Hide. Then only Chrome works.
  • If I remove Show and Hide, everything works again.
  • If I keep only Show and Hide, everything works perfectly

Maybe Show and Hide options for dialog widget do not mix up well with other options.

Thanks for helping.

A: 

You may be missing something. It surely works in all major browsers.

Konrad Garus
+1  A: 

No, jQuery UI works in any of those browsers. It's probably either the steps you're following don't work so well with the version you're using or the version you're using is old. I've used jQuery UI without issue on both browsers. If you don't believe me, then open this URL in your browser:

http://jqueryui.com/demos/dialog/

In Firefox 3.6, it loads just fine for me.

I'm not an expert on jQuery UI, but providing the code here might help.

Mike Thomsen
A: 

jQuery is ment to be cross browser. Any errors with this can have to reasons - Programmer's error - Explicit incompatibilty

There are some explicit incompatibility's with IE5.5 and IE6 in jQuery. They are in the comments of jQuery and a good js compatible IDE like netbeans will allow targeting and warn you about it.

I never had any problems with the dialog widget positioning or contents.

douwe
+1  A: 

jQuery supports all the major browsers however there are know issues with;

  • Firefox 1.0.x
  • Internet Explorer 1.0-5.x
  • Safari 1.0-2.0.1
  • Opera 1.0-8.x
  • Konqueror

We have successfully implemented a Dialog widget without major issues. We did have some problems making sure the correct versions of the libraries were created. I would suggest you build a custom file using the jQuery UI download tool. This will put all the necessary files in a single minified file.

If the Dialog examples don't help then posting code will be necessary to obtain further help.

EDIT:

I have anchors created with the classes dialogOpen and dialogClose and use the following code to utilise the created UI Dialog;

$(document).ready(function(){
            var dialogOpts = {
                autoOpen: false,
                modal: true,
                width: 840,
                height: 560
            };

            $(".dialogOpen").click(function(){
                $("#myDialog").dialog("open");
                return false;
            });

            $(".dialogClose").click(function(){
                $("#myDialog").dialog("close");
                return false;
            });

            $("#myDialog").css('display','block').dialog(dialogOpts);
            $(".ui-dialog-titlebar").hide();

        });

NB: The use of the css function when creating the dialog stops the content appearing on the page before the Dialog is created. We needed this because our dialog has flash.

Dave Anderson
A: 

jQuery UI is most definitly not designed to work with Google Chrome only.

I've successfully created applications using jQuery UI working on all major browser platforms.

jQuery UI (and jQuery) contain code to work around certain browser issues.

Of course there can be issues in jQuery UI which show on IE, like this one, but those are certainly not by design.

DR