diff --git a/src/pkg/html/parse.go b/src/pkg/html/parse.go
index 97fbc514d82..dd2d8165bdb 100644
--- a/src/pkg/html/parse.go
+++ b/src/pkg/html/parse.go
@@ -515,7 +515,19 @@ func afterHeadIM(p *parser) bool {
implied bool
)
switch p.tok.Type {
- case ErrorToken, TextToken:
+ case ErrorToken:
+ implied = true
+ framesetOK = true
+ case TextToken:
+ s := strings.TrimLeft(p.tok.Data, whitespace)
+ if len(s) < len(p.tok.Data) {
+ // Add the initial whitespace to the current node.
+ p.addText(p.tok.Data[:len(p.tok.Data)-len(s)])
+ if s == "" {
+ return true
+ }
+ p.tok.Data = s
+ }
implied = true
framesetOK = true
case StartTagToken:
@@ -535,7 +547,8 @@ func afterHeadIM(p *parser) bool {
defer p.oe.pop()
return inHeadIM(p)
case "head":
- // TODO.
+ // Ignore the token.
+ return true
default:
implied = true
framesetOK = true
diff --git a/src/pkg/html/parse_test.go b/src/pkg/html/parse_test.go
index e0c19cff6da..5062a6edcb8 100644
--- a/src/pkg/html/parse_test.go
+++ b/src/pkg/html/parse_test.go
@@ -167,6 +167,7 @@ func TestParser(t *testing.T) {
{"tests3.dat", -1},
{"tests4.dat", -1},
{"tests5.dat", -1},
+ {"tests6.dat", 7},
}
for _, tf := range testFiles {
f, err := os.Open("testdata/webkit/" + tf.filename)