Index: Source/core/html/HTMLNameCollection.cpp |
diff --git a/Source/core/html/HTMLNameCollection.cpp b/Source/core/html/HTMLNameCollection.cpp |
index 1dc5242539e21b70e6ac34e5767da4c6ec5db638..9941f554c5191b8492263245955535ad84a8c25f 100644 |
--- a/Source/core/html/HTMLNameCollection.cpp |
+++ b/Source/core/html/HTMLNameCollection.cpp |
@@ -27,6 +27,8 @@ |
#include "core/dom/Element.h" |
#include "core/dom/ElementTraversal.h" |
#include "core/dom/NodeRareData.h" |
+#include "core/html/HTMLEmbedElement.h" |
+#include "core/html/HTMLObjectElement.h" |
namespace WebCore { |
@@ -78,10 +80,13 @@ Element* HTMLNameCollection::virtualItemAfter(unsigned& offsetInArray, Element* |
// find images, forms, applets, embeds, objects and iframes by name, |
// applets and object by id, and images by id but only if they have |
// a name attribute (this very strange rule matches IE) |
- if (current->hasTagName(formTag) || current->hasTagName(embedTag) || current->hasTagName(iframeTag)) { |
+ if (current->hasTagName(formTag) |
+ || current->hasTagName(iframeTag) |
+ || (current->hasTagName(embedTag) && toHTMLEmbedElement(current)->isExposed())) { |
if (current->getNameAttribute() == m_name) |
return current; |
- } else if (current->hasTagName(appletTag) || current->hasTagName(objectTag)) { |
+ } else if (current->hasTagName(appletTag) |
+ || (current->hasTagName(objectTag) && toHTMLObjectElement(current)->isExposed())) { |
if (current->getNameAttribute() == m_name || current->getIdAttribute() == m_name) |
return current; |
} else if (current->hasTagName(imgTag)) { |