sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    JS loading problem under Mac OS X SU

    Scheduled Pinned Locked Moved Developers' Forum
    14 Posts 3 Posters 1.6k Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • thomthomT Offline
      thomthom
      last edited by

      See if you can catch any errors in the error console

      Might have to enable the Developer Tools: http://developer.apple.com/safari/library/documentation/appleapplications/conceptual/safari_developer_guide/2safaridevelopertools/safaridevelopertools.html

      Thomas Thomassen — SketchUp Monkey & Coding addict
      List of my plugins and link to the CookieWare fund

      1 Reply Last reply Reply Quote 0
      • RichMorinR Offline
        RichMorin
        last edited by

        I already had the Developer Tools enabled. Clicking on "Enable Extensions" allows my JavaScript to run under Safari, but of course this doesn't help the WebDialog under SketchUp.

        So, I suppose I can either:

        • try to figure out what requires the extensions
        • wait for Google to add the extensions to SketchUp

        It looks like it doesn't like the :not() syntax. The following version works under Safari, but still fails (ie, no JS activity) under SU:

        
        $(document).ready(
          function() {
        //  alert(1);
        
            var fc  = $('div.show_hide > ;first-child'      );
            var oc  = fc.nextAll();
            var sw  = ' (<a href="#">show</a>)';
            fc.append(sw);
            oc.hide();
        
            $('a', fc).click(
              function(event) {
                var div  = $(this).parent().parent();
        		    var fc   = $('> ;first-child',       div);
        		    var fca  = $('a',                    fc);
                var oc   = fc.nextAll();
        
                if (fca.text() == 'show') {
                  fca.text('hide'); oc.show();
                }
                else {
                  fca.text('show'); oc.hide();
                }
              }
            );
          }
        );
        
        

        In fact, even this doesn't work under SU:

        
        $(document).ready(
          function() {
            $('h3').addClass('blue');
          }
        );
        
        

        Tracking this down with a number of cases, it appears that $(document).ready() never fires, whether in the HTML file or the invoked JS file.

        1 Reply Last reply Reply Quote 0
        • Dan RathbunD Offline
          Dan Rathbun
          last edited by

          %(#804000)[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">]

          Do you need XHTML Strict ???
          .. or can you try HTML 4.01 Strict .. or Transitional ??

          I'm not here much anymore.

          1 Reply Last reply Reply Quote 0
          • Dan RathbunD Offline
            Dan Rathbun
            last edited by

            I am SO surprised that Google Corporate has not yet made Sketchup "support" Google Chrome as THE WebDialog engine for Sketchup.

            I'm not here much anymore.

            1 Reply Last reply Reply Quote 0
            • Dan RathbunD Offline
              Dan Rathbun
              last edited by

              .

              You could try your own ready trap:

              see this post: Re: PC v MAC webdialog populate

              I'm not here much anymore.

              1 Reply Last reply Reply Quote 0
              • RichMorinR Offline
                RichMorin
                last edited by

                I'm only using Strict because ThomThom recommends it. That said, changing DOCTYPE to Transitional does not make any difference.

                Following the advice of a JS hacker, I changed the way I was telling the code to run in my JS file. Specifically, I added onload="main()" to the body tag and used main() as the name of the function in my foo.js file.

                I then performed a minimal test, without jQuery, to see if I could get that working. After adding id="foo" to my (only) h1 header, I tried:

                
                function main() {
                  var foo = document.getElementById('foo');
                  foo.innerHTML = 'Hello, World!';
                }
                
                

                This worked under SketchUp, proving that it could use JS from a file. I then added a number of lines of code (that worked in Firefox and Safari), to see what transpired:

                
                function main() {
                  var foo = document.getElementById('foo');
                  foo.innerHTML = 'Hello, World!';
                  alert('main 1');
                  $('h3').addClass('blue');        //T - Ignored
                
                  var fc  = $('div.show_hide > ;first-child');
                  var oc  = fc.nextAll();
                  var sw  = ' (<a href="#">show</a>)';
                
                  fc.append(sw);                   //T - Ignored
                  oc.hide();                       //T - Ignored
                  ...
                }
                
                

                As the comments indicate, at least some of my jQuery methods are being ignored by the WebDialog. I'm not sure how to proceed at the moment. One possibility is that the version of jQuery I'm using (1.4.2) is incompatible with SU 7.1. If anyone can speak to this question, please do!

                1 Reply Last reply Reply Quote 0
                • thomthomT Offline
                  thomthom
                  last edited by

                  @dan rathbun said:

                  %(#804000)[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">]

                  Do you need XHTML Strict ???
                  .. or can you try HTML 4.01 Strict .. or Transitional ??

                  XHTML4 vs HTML4 doesn't really make a difference. Not unless you send the XHTML as XML.

                  Strict vs Transitional will make a difference - though personally I prefer strict as I find the rendering more predictable as transitional appear to have more cross platform quirks.

                  Thomas Thomassen — SketchUp Monkey & Coding addict
                  List of my plugins and link to the CookieWare fund

                  1 Reply Last reply Reply Quote 0
                  • thomthomT Offline
                    thomthom
                    last edited by

                    @richmorin said:

                    Following the advice of a JS hacker, I changed the way I was telling the code to run in my JS file. Specifically, I added onload="main()" to the body tag and used main() as the name of the function in my foo.js file.

                    That is odd... using jQuery's load event didn't work - but the old onload did?
                    I've not had any problems with the jQuery's event.

                    @richmorin said:

                    One possibility is that the version of jQuery I'm using (1.4.2) is incompatible with SU 7.1. If anyone can speak to this question,

                    I use that version of jQuery. I also used 1.3.x - had no problems in SU6-7.1 on either Windows or OSX.

                    This is puzzling...
                    I've not been fully able to wrap my head around what your code does - or intend to do.

                    Thomas Thomassen — SketchUp Monkey & Coding addict
                    List of my plugins and link to the CookieWare fund

                    1 Reply Last reply Reply Quote 0
                    • Dan RathbunD Offline
                      Dan Rathbun
                      last edited by

                      It's not a baseref issue? All the script files ARE getting loaded while running inside SU ?

                      I'm not here much anymore.

                      1 Reply Last reply Reply Quote 0
                      • RichMorinR Offline
                        RichMorin
                        last edited by

                        It turns out that the relative paths to my library JS (and probably CSS) were working under the browsers, but not under SU. !@#$%^ (Thanks, Dan!)

                        1 Reply Last reply Reply Quote 0
                        • Dan RathbunD Offline
                          Dan Rathbun
                          last edited by

                          @richmorin said:

                          It turns out that the relative paths to my library JS (and probably CSS) were working under the browsers, but not under SU. !@#$%^ (Thanks, Dan!)

                          Ok that's a common booboo, nothing too bad.

                          There's a fix we talked about in another thread where we were brainstorming how to set up a "mini" 3Dwarehouse for Eric's SketchTHIS.net website:
                          Re: Download to Sketchup button

                          I'm not here much anymore.

                          1 Reply Last reply Reply Quote 0
                          • 1 / 1
                          • First post
                            Last post
                          Buy SketchPlus
                          Buy SUbD
                          Buy WrapR
                          Buy eBook
                          Buy Modelur
                          Buy Vertex Tools
                          Buy SketchCuisine
                          Buy FormFonts

                          Advertisement