Programmatically open new pages on Tabs

512

Solution 1

You can't directly control this, because it's an option controlled by Internet Explorer users.

Opening pages using Window.open with a different window name will open in a new browser window like a popup, OR open in a new tab, if the user configured the browser to do so.

Solution 2

You can, in Firefox it works, add the attribute target="_newtab" to the anchor to force the opening of a new tab.

<a href="some url" target="_newtab">content of the anchor</a>

In javascript you can use

window.open('page.html','_newtab');

Said that, I partially agree with Sam. You shouldn't force user to open new pages or new tab without showing them a hint on what is going to happen before they click on the link.

Let me know if it works on other browser too (I don't have a chance to try it on other browser than Firefox at the moment).

Edit: added reference for ie7 Maybe this link can be useful
http://social.msdn.microsoft.com/forums/en-US/ieextensiondevelopment/thread/951b04e4-db0d-4789-ac51-82599dc60405/

Solution 3

Those of you trying to use the following:

window.open('page.html', '_newtab');

should really look at the window.open method.

All you are doing is telling the browser to open a new window NAMED "_newtab" and load page.html into it. Every new page you load will load into that window. However, if a user has their browser set to open new pages in new tabs instead of new windows, it will open a tab. Regardless, it's using the same name for the window or tab.

If you want different pages to open in different windows or tabs you will have to change the NAME of the new window/tab to something different such as:

window.open('page2.html', '_newtab2');

Of course the name for the new window/tab could be any name like page1, page2, page3, etc. instead of _newtab2.

Solution 4

It's up to the user whether they want to use new tabs or new windows, it isn't the business of the developer to modify this behaviour. I do not think you can do it.

Pet peeve of mine - I hate it when sites force me to open in a new window / tab - I am quite capable of making that decision for myself. Particularly when they do it in javascript - that is really unhelpful.

Solution 5

Have you already tried like

var open_link = window.open('','_blank');
open_link.location="somepage.html";
Share:
512

Related videos on Youtube

user3462064
Author by

user3462064

Updated on July 08, 2022

Comments

  • user3462064
    user3462064 almost 2 years

    Am trying to fetch and filter subdocuments in array.

    The document has this structure:

    {
        "_id": {
            "$oid": "58bc4fa0fd85f439ee3ce716"
        },
        "updatedAt": {
            "$date": "2017-03-08T20:39:19.390Z"
        },
        "createdAt": {
            "$date": "2017-03-05T17:49:20.455Z"
        },
        "app": {
            "$oid": "58ae10852035431d5a746cbd"
        },
        "stats": [
            {
                "meta": {
                    "key": "value",
                    "key": "value"
                },
                "_id": {
                    "$oid": "58bc4fc4fd85f439ee3ce718"
                },
                "data": "data",
                "updatedAt": {
                    "$date": "2017-03-05T17:49:56.305Z"
                },
                "createdAt": {
                    "$date": "2017-03-05T17:49:56.305Z"
                }
            },
            {
                "meta": {
                    "key": "value",
                    "key": "value"
                },
                "_id": {
                    "$oid": "58c06bf79eaf1f15aafe39d0"
                },
                "data": "data",
                "updatedAt": {
                    "$date": "2017-03-08T20:39:19.391Z"
                },
                "createdAt": {
                    "$date": "2017-03-08T20:39:19.391Z"
                }
            }
        ]
    }
    

    What i want to get is the subdocuments in the stats array between two dates I tried mongoose queries chain:

    Model.findById(id)
      .select('stats')
      .where('stats.createdAt').gt(data-value).lt(data-value)
    

    But the result always the full document including the all the subdocuments.

    Also I tried aggregation like this:

      Model.aggregate({ 
        $match: { 
          'stats.createdAt': '2017-03-05T17:49:56.305Z' 
        } 
      })
    

    The result is always null

    • Dungeo
      Dungeo over 15 years
      I am not sure I get the point - are you developing an app, which works with IE and you want to open each new page on new tab? Or you just want to set up the IE to open new tab when clicked on a link? Or are you creating any site with more links and you want them to open separately? Pls make it clearlier.
    • Arthur S.
      Arthur S. over 15 years
      Thanks of all your comments and answers, I know this is not a big deal and shouldn't be an issue in my development, but this is a client request, not an important one I just wanted to know. The problem is that IE7 and Safari won't open a popup with a tab using javascript or target attribute, true?
  • Richard Ev
    Richard Ev over 15 years
    +1 to Sam - new pages opening in tabs or windows is a browser (and user) specific choice. In general I hate it when any site opens a new window.
  • thenonhacker
    thenonhacker over 15 years
    Thanks for this Firefox tip, now I have updated my TargetKiller addon to remove "_newtab" and "newtab". :P
  • Arthur S.
    Arthur S. over 15 years
    I really appreciate your answer, but I do know that Firefox will do it (some texts, not tested by me, remark that this is not always true, there's a 50-50 chance to get a new window or tab). I also think this shouldn't be an issue, but, you know clients :)
  • guerda
    guerda over 15 years
    In addition to this: In the "strict" definition, there's no valid attribute "target" because of not annoying the user. Try it: validator.w3.org
  • barryjones
    barryjones about 14 years
    This may not be the case on all builds/platforms, but Firefox 3.5 on Linux doesn't allow you to do this more than once... if you have multiple target="_newtab" links on your page, clicking on any of them will only populate a single new tab... that is, subsequent clicks will overwrite anything opened previously in that tab. Makes me think this is actually opening a tab named "_newtab", rather than being a browser-specific workaround.
  • Mark Essel
    Mark Essel almost 14 years
    I like opening batches of tabs at home, so I am the user in that case. Just a reminder that there are exceptions.
  • Tom Lianza
    Tom Lianza over 13 years
    I'm pretty sure "_newtab" is meaningless, unless someone has documentation to the contrary. All you're doing is opening a window who's name is _newtab (which is why all subsequent links with that target open in the same window). You can target "foo" or "bar" and see the same behavior. The only well-known targets are _blank, _self, _parent, and _top. htmlcodetutorial.com/linking/_A_TARGET.html
  • w00t
    w00t almost 13 years
    that's because in Chrome, _newtab is just a name and you're requesting it to open the page in the tab named "_newtab"
  • travega
    travega over 12 years
    Glenn this is the opposite of what the OP asked for. _self will open the document in the same window or frame.
  • pixelastic
    pixelastic over 12 years
    Why not simply using plain old html ? <a href="page.html" target="_blank">foo</a>
  • andyface
    andyface about 12 years
    while I agree it can be annoying when sites force actions, I think it's a little unhelpful to simple state that you shouldn't do something without considering the reasons why someone might want to do it. It's common for sites to open things in new tabs, particularly external site links or when it's not helpful to have an active page replaced by new content so it's not entirely unexpected behaviour. I'd also suggest this isn't really an answer to the question and would have been better suited as a comment to the original post.
  • Derek Litz
    Derek Litz about 12 years
    I disagree, assuming a default for the user is a design choice per web application not per browser. The browser can subscribe a default where the application does not. Also, if browsers supply the user with a way to override application defaults/browser defaults, then it's the best of both worlds. User > Application > Browser.
  • n00b
    n00b over 11 years
    Is this cross browser compatible? Seems to work in IE8, worried about future versions or other browsers.
  • Thurein Soe
    Thurein Soe almost 11 years
    Yes.. it's compatible for cross browser. I got no problem with it until now :D
  • Xenology
    Xenology over 10 years
    can you provide a jsfiddle?
  • Michael Blackburn
    Michael Blackburn over 8 years
    @pixelastic "By using this method, you do not trigger the parent's click event."
  • Dead.Rabit
    Dead.Rabit about 8 years
    When the "Let Internet Explorer decide how popups open" option is selected, what criteria does Internet Explorer use to make this decision?
  • user3462064
    user3462064 about 7 years
    Hi! events the data in the question example exist in the DB but the result of your solution is empty array []
  • Bertrand Martel
    Bertrand Martel about 7 years
    maybe because of the ObjectId type, I've updated my post
  • vusan
    vusan almost 7 years
    Also It's not the way to open in programmatic way. Surprise is that how it gain +10 rep(+3/-10) with this answer.
  • BradChesney79
    BradChesney79 over 5 years
    knows his stuff. '_newtab' is not a reserved name. '_blank' is a special thing that opens up another unspecified and unnamed window/tab-- this one you can keep using over and over. '_newtab' is not special except that it is the specific name you gave a new tab(default) or window, which your browser keeps refreshing with whatever url you send to it.
  • user1563544
    user1563544 almost 3 years
    This is not an answer to the OP's question.