Bug 51387

Summary: when open a link with empty target frame, always create a new window
Product: WebKit Reporter: ZhangYong <leonzy>
Component: FramesAssignee: Nobody <webkit-unassigned>
Status: UNCONFIRMED ---    
Severity: Normal CC: ap
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: All   

Description ZhangYong 2010-12-21 01:46:35 PST
when a link looks like <a href="about.html">link</a>

it implies that the "target" of this link is empty. In IE and firefox´╝î this link will be opened inside current frame.

And in webkit, the real target was reset to current document's target name.  If this target is "_blank", this link will be opened in a new window( which is not correct).
Comment 1 Alexey Proskuryakov 2010-12-21 11:53:33 PST
Thank you for the report! Do you have a test case or an example URL showing the problem? does this affect any live Web sites?
Comment 2 ZhangYong 2010-12-21 18:07:58 PST
try this:
http://club3.kdnet.net/dispbbs.asp?boardid=1&id=6659651
(note it is in Chinese!)

Click the page number (at the bottom of the page), it will open a new tab while IE&firefox will open in current tab.

I've fix this problem, code as below:

@@ -288,8 +288,11 @@ void FrameLoader::urlSelected(const ResourceRequest& request, const String& pass
         return;
 
     String target = passedTarget;
-    if (target.isEmpty())
+    if (target.isEmpty()) {
         target = m_frame->document()->baseTarget();
+        if (target == "_blank")
+            target = "_self";
+    }
 
     FrameLoadRequest frameRequest(request, target);
Comment 3 ZhangYong 2011-01-05 01:12:00 PST
sorry, the patch need a fix
 @@ -288,8 +288,11 @@ void FrameLoader::urlSelected(const ResourceRequest& request, const String& pass
          return;
 
      String target = passedTarget;
 -    if (target.isEmpty())
 +    if (target.isEmpty()) {
          target = m_frame->document()->baseTarget();
 +        if (target.isEmpty())
 +            target = "_self";
 +    }
 
      FrameLoadRequest frameRequest(request, target);

(In reply to comment #2)
> try this:
> http://club3.kdnet.net/dispbbs.asp?boardid=1&id=6659651
> (note it is in Chinese!)
> 
> Click the page number (at the bottom of the page), it will open a new tab while IE&firefox will open in current tab.
> 
> I've fix this problem, code as below:
> 
> @@ -288,8 +288,11 @@ void FrameLoader::urlSelected(const ResourceRequest& request, const String& pass
>          return;
> 
>      String target = passedTarget;
> -    if (target.isEmpty())
> +    if (target.isEmpty()) {
>          target = m_frame->document()->baseTarget();
> +        if (target == "_blank")
> +            target = "_self";
> +    }
> 
>      FrameLoadRequest frameRequest(request, target);
Comment 4 Alexey Proskuryakov 2011-01-05 01:21:09 PST
Would you be willing to submit a patch with a test case, as described in <http://webkit.org/coding/contributing.html>?