href with onClick javascript problem in new window

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Mike

    href with onClick javascript problem in new window

    In my previous post, I wrote:[color=blue]
    > ...
    > GOAL: (very simple) Provide a hyperlink which, when clicked,
    > calls a javascript function which opens a new URL.
    > ...
    > PROBLEM: The following code works fine if I click to open in
    > the same window, but if I click the browser option to open in a
    > new window, the new window tries to open the href URL (the
    > onClick function does get executed, but seems to be ignored).
    > ...
    > <script language="javas cript">
    > function NewPage() {
    > location.href = "/cgi-bin/page1.pl";
    > }
    > </script>
    > ...
    > <a href="noJS.htm" onClick="NewPag e(); return false;">
    > ...[/color]

    I should have mentioned the following two things:

    1. The above NewPage() function is just an example. The actual
    function has to do some work to create the final target.

    2. I originally tried just putting this into the href
    href="javascrip t:NewPage();"
    This worked fine for the same window, but when asking for a
    new window, it tries to run NewPage() in the blank window,
    which of course doesn't work.

    Thanks,
    Mike
  • Grant Wagner

    #2
    Re: href with onClick javascript problem in new window

    Mike wrote:
    [color=blue]
    > In my previous post, I wrote:[color=green]
    > > ...
    > > GOAL: (very simple) Provide a hyperlink which, when clicked,
    > > calls a javascript function which opens a new URL.
    > > ...
    > > PROBLEM: The following code works fine if I click to open in
    > > the same window, but if I click the browser option to open in a
    > > new window, the new window tries to open the href URL (the
    > > onClick function does get executed, but seems to be ignored).
    > > ...
    > > <script language="javas cript">
    > > function NewPage() {
    > > location.href = "/cgi-bin/page1.pl";
    > > }
    > > </script>
    > > ...
    > > <a href="noJS.htm" onClick="NewPag e(); return false;">
    > > ...[/color]
    >
    > I should have mentioned the following two things:
    >
    > 1. The above NewPage() function is just an example. The actual
    > function has to do some work to create the final target.
    >
    > 2. I originally tried just putting this into the href
    > href="javascrip t:NewPage();"
    > This worked fine for the same window, but when asking for a
    > new window, it tries to run NewPage() in the blank window,
    > which of course doesn't work.
    >
    > Thanks,
    > Mike[/color]

    <a href="noJS.htm" onclick="NewPag e();return false;">

    is the way to do it. I suggest you try it with:

    <script type="text/javascript">
    function NewPage() {
    alert('here');
    window.location .href = 'http://www.yahoo.com';
    }
    </script>

    Once you have convinced yourself that the function is firing and
    directing the browser to Yahoo!, you can begin to work on what is most
    likely the real problem, which is that the "work" your script is doing
    to build the URI is probably building an *incorrect* URI, or the code
    itself has a syntax error. The way to confirm this is to use:

    var uri = something;
    uri += somethingElse;
    uri += moreStuff + somethingDiffer ent;
    alert(uri);
    return;
    window.location .href = uri;

    Now you can closely examine the results of what you built and ensure
    it is a valid URI. If you never get the alert, then the problem is a
    syntax error in your code, which you can check by either
    double-clicking the yellow "!" in the bottom left corner of Internet
    Explorer or entering "javascript :" in the address bar of
    Mozilla/Netscape/Firefox and hitting enter.

    --
    | Grant Wagner <gwagner@agrico reunited.com>

    * Client-side Javascript and Netscape 4 DOM Reference available at:
    *


    * Internet Explorer DOM Reference available at:
    *
    Find official documentation, practical know-how, and expert guidance for builders working and troubleshooting in Microsoft products.


    * Netscape 6/7 DOM Reference available at:
    * http://www.mozilla.org/docs/dom/domref/
    * Tips for upgrading JavaScript for Netscape 7 / Mozilla
    * http://www.mozilla.org/docs/web-deve...upgrade_2.html


    Comment

    • Mike

      #3
      Re: href with onClick javascript problem in new window

      Grant Wagner <gwagner@agrico reunited.com> wrote in message news:<40926946. 1FF32559@agrico reunited.com>.. .[color=blue]
      > Mike wrote:
      >[color=green]
      > > In my previous post, I wrote:[color=darkred]
      > > > ...
      > > > GOAL: (very simple) Provide a hyperlink which, when clicked,
      > > > calls a javascript function which opens a new URL.
      > > > ...
      > > > PROBLEM: The following code works fine if I click to open in
      > > > the same window, but if I click the browser option to open in a
      > > > new window, the new window tries to open the href URL (the
      > > > onClick function does get executed, but seems to be ignored).
      > > > ...
      > > > <script language="javas cript">
      > > > function NewPage() {
      > > > location.href = "/cgi-bin/page1.pl";
      > > > }
      > > > </script>
      > > > ...
      > > > <a href="noJS.htm" onClick="NewPag e(); return false;">
      > > > ...[/color]
      > > Thanks,
      > > Mike[/color]
      >
      > <a href="noJS.htm" onclick="NewPag e();return false;">
      >
      > is the way to do it. I suggest you try it with:
      >
      > <script type="text/javascript">
      > function NewPage() {
      > alert('here');
      > window.location .href = 'http://www.yahoo.com';
      > }
      > </script>
      >
      > Once you have convinced yourself that the function is firing and
      > directing the browser to Yahoo!, you can begin to work on what is most
      > likely the real problem, which is that the "work" your script is doing
      > to build the URI is probably building an *incorrect* URI, or the code
      > itself has a syntax error. The way to confirm this is to use:
      > ...[/color]

      Thank you very much for the speedy reply with advice and
      pointers to the other info.

      Perhaps I should first clarify what I mean by "clicking the browser
      option to open in a new window." By this I mean, with IE or NS, I
      right click on the <a> object, and select "Open Link in New Window"
      from pulldown.

      Do I need to detect this differently than via onClick. Do I need
      to detect the right mouse, and then figure out which of the pulldown
      elements they asked for?

      In any case, I did try your suggestion. Here is the exact code I ran:

      <html>
      <head>
      <script type="text/javascript">
      function NewPage() {
      alert('here');
      window.location .href = 'http://www.yahoo.com';
      }
      </script>
      </head>
      <body>
      <a href="noJS.htm" onClick="NewPag e(); return false;">CLICK</a>
      </body>
      </html>

      If I open in the same window, the alert shows up and I get
      to yahoo. If I open in new window (as described above) then it
      does NOT fire the function, and just tries to open noJS.htm.

      I also now see that in IE, if I right click on the <a> object,
      and then select "Open Link" (which should then open it in the
      same window), this also DOES NOT fire the function. It seems
      that only the left mouse causes onClick to occur.

      Thanks again. And sorry if I am being dense.

      Mike

      Comment

      • Mike

        #4
        Re: href with onClick javascript problem in new window

        After referring to the IE DOM reference that Grant Wagner
        pointed out in his followup, I see that the onClick event
        only applies to the LEFT mouse button. There is another event
        for the RIGHT context menu button (which I was using to get
        the new window).

        The NS solution is not so immediately obvious to me, but it
        must be a similar thing.

        Sorry for the unnecessary last post where I asked if I need
        to detect right mouse differently. I should have looked at
        those DOM references before posting.

        Those pointers to the DOM referencese are a big help (I left
        them in the inclusion below).
        Thanks!
        Mike

        Grant Wagner <gwagner@agrico reunited.com> wrote in message news:<40926946. 1FF32559@agrico reunited.com>.. .[color=blue]
        > Mike wrote:
        >[color=green]
        > > In my previous post, I wrote:[color=darkred]
        > > > ...
        > > > GOAL: (very simple) Provide a hyperlink which, when clicked,
        > > > calls a javascript function which opens a new URL.
        > > > ...
        > > > PROBLEM: The following code works fine if I click to open in
        > > > the same window, but if I click the browser option to open in a
        > > > new window, the new window tries to open the href URL (the
        > > > onClick function does get executed, but seems to be ignored).
        > > > ...
        > > > <script language="javas cript">
        > > > function NewPage() {
        > > > location.href = "/cgi-bin/page1.pl";
        > > > }
        > > > </script>
        > > > ...
        > > > <a href="noJS.htm" onClick="NewPag e(); return false;">
        > > > ...[/color]
        > >
        > > I should have mentioned the following two things:
        > >
        > > 1. The above NewPage() function is just an example. The actual
        > > function has to do some work to create the final target.
        > >
        > > 2. I originally tried just putting this into the href
        > > href="javascrip t:NewPage();"
        > > This worked fine for the same window, but when asking for a
        > > new window, it tries to run NewPage() in the blank window,
        > > which of course doesn't work.
        > > ...[/color]
        > <a href="noJS.htm" onclick="NewPag e();return false;">
        >
        > is the way to do it. I suggest you try it with:
        >
        > <script type="text/javascript">
        > function NewPage() {
        > alert('here');
        > window.location .href = 'http://www.yahoo.com';
        > }
        > </script>
        > ...
        >| Grant Wagner <gwagner@agrico reunited.com>
        >
        >* Client-side Javascript and Netscape 4 DOM Reference available at:
        >*
        >http://devedge.netscape.com/library/...ce/frames.html
        >
        >* Internet Explorer DOM Reference available at:
        >*
        >http://msdn.microsoft.com/workshop/a...ence_entry.asp
        >
        >* Netscape 6/7 DOM Reference available at:
        >* http://www.mozilla.org/docs/dom/domref/
        >* Tips for upgrading JavaScript for Netscape 7 / Mozilla
        >* http://www.mozilla.org/docs/web-deve...upgrade_2.html[/color]

        Comment

        • Mike

          #5
          Re: href with onClick javascript problem in new window

          Here's a (partial) solution to my original post.

          ORIGINAL GOAL: Provide a hyperlink which calls a javascript
          function to create a new URL, which will work whether clicked
          with the left mouse, or the right mouse context menu (e.g., to
          open the URL in a new tab or a new window).

          SOLUTION: This requires (1) detecting the right mouse click in
          addition to the left, and (2) javascript function must set the
          element.href and then return "true" (which allows the context
          menu to work as normal, and then if the user does elect to open
          the link, it will follow the replaced href).

          The following works for at least IE6, NS7.1, Mozilla 1.6, but
          not Opera. I can't see how to detect the right mouse click in
          Opera, so if the user right clicks to open new page or window,
          they will get noJS.htm. I did not try this with a Mac.

          <script type="text/javascript">
          function NewPage(element ) {
          // create desired URI and assign to the element's href.
          target = "http://www.yahoo.com"
          element.href = target;
          }
          </script>
          ...
          <a href="noJS.htm"
          onClick= "NewPage(th is); return true;"
          oncontextmenu=" NewPage(this); return true;"> ... </a>

          Mike

          zeleznik@comcas t.net (Mike) wrote in message news:<484ca2e9. 0404301525.34c8 b501@posting.go ogle.com>...[color=blue]
          > After referring to the IE DOM reference that Grant Wagner
          > pointed out in his followup, I see that the onClick event
          > only applies to the LEFT mouse button. There is another event
          > for the RIGHT context menu button (which I was using to get
          > the new window).
          > ...
          > Those pointers to the DOM referencese are a big help (I left
          > them in the inclusion below).
          > Thanks!
          > Mike
          >
          > Grant Wagner <gwagner@agrico reunited.com> wrote in message news:<40926946. 1FF32559@agrico reunited.com>.. .[color=green]
          > > Mike wrote:
          > >[color=darkred]
          > > > In my previous post, I wrote:
          > > > > ...
          > > > > GOAL: (very simple) Provide a hyperlink which, when clicked,
          > > > > calls a javascript function which opens a new URL.
          > > > > ...
          > > > > PROBLEM: The following code works fine if I click to open in
          > > > > the same window, but if I click the browser option to open in a
          > > > > new window, the new window tries to open the href URL (the
          > > > > onClick function does get executed, but seems to be ignored).
          > > > > ...
          > > > > <script language="javas cript">
          > > > > function NewPage() {
          > > > > location.href = "/cgi-bin/page1.pl";
          > > > > }
          > > > > </script>
          > > > > ...
          > > > > <a href="noJS.htm" onClick="NewPag e(); return false;">
          > > > > ...
          > > > ...[/color]
          > > <a href="noJS.htm" onclick="NewPag e();return false;">
          > >
          > > is the way to do it. I suggest you try it with:
          > >
          > > <script type="text/javascript">
          > > function NewPage() {
          > > alert('here');
          > > window.location .href = 'http://www.yahoo.com';
          > > }
          > > </script>
          > > ...
          > >| Grant Wagner <gwagner@agrico reunited.com>
          > >
          > >* Client-side Javascript and Netscape 4 DOM Reference available at:
          > >*
          > >http://devedge.netscape.com/library/...ce/frames.html
          > >
          > >* Internet Explorer DOM Reference available at:
          > >*
          > >http://msdn.microsoft.com/workshop/a...ence_entry.asp
          > >
          > >* Netscape 6/7 DOM Reference available at:
          > >* http://www.mozilla.org/docs/dom/domref/
          > >* Tips for upgrading JavaScript for Netscape 7 / Mozilla
          > >* http://www.mozilla.org/docs/web-deve...upgrade_2.html[/color][/color]

          Comment

          • Thomas 'PointedEars' Lahn

            #6
            Re: href with onClick javascript problem in new window

            Mike wrote:
            [color=blue]
            > Perhaps I should first clarify what I mean by "clicking the browser
            > option to open in a new window." By this I mean, with IE or NS, I
            > right click on the <a> object, and select "Open Link in New Window"
            > from pulldown.[/color]

            And what about pressing the Shift or Ctrl key while clicking the link
            or pressing the Return/Enter key? Have you ever heard of Tabbed Browsing?
            Have you ever heard of Opera aso.? Have you ever heard of text browsers
            like `lynx' or `links'? Have you ever heard of tools for disabled people
            like screen readers and Braille lines?
            [color=blue]
            > Do I need to detect this differently than via onClick. Do I need
            > to detect the right mouse, and then figure out which of the pulldown
            > elements they asked for?[/color]

            Much you have to learn, young apprentice. Do you really think that
            crippling the browsing tool of your visitors via a technology that can be
            restricted, disabled or not even present is a Good Thing? Do you really
            think that every system has a pointing device? Do you really think that
            every visitor makes use of such a device? Do you really think that every
            visitor uses the same software (OS, UA, UA version)? Do I need to continue?

            If you code for the Web, first you need to learn how the Web works.


            PointedEars

            Comment

            Working...