|
60 | 60 | import org.htmlunit.corejs.javascript.VarScope; |
61 | 61 | import org.htmlunit.corejs.javascript.WithScope; |
62 | 62 | import org.htmlunit.html.DomNode; |
| 63 | +import org.htmlunit.html.HtmlElement; |
| 64 | +import org.htmlunit.html.HtmlForm; |
63 | 65 | import org.htmlunit.html.HtmlPage; |
64 | 66 | import org.htmlunit.javascript.background.BackgroundJavaScriptFactory; |
65 | 67 | import org.htmlunit.javascript.background.JavaScriptExecutor; |
|
73 | 75 | import org.htmlunit.javascript.host.URLSearchParams; |
74 | 76 | import org.htmlunit.javascript.host.Window; |
75 | 77 | import org.htmlunit.javascript.host.dom.DOMException; |
| 78 | +import org.htmlunit.javascript.host.html.HTMLElement; |
76 | 79 | import org.htmlunit.javascript.host.html.HTMLImageElement; |
77 | 80 | import org.htmlunit.javascript.host.html.HTMLOptionElement; |
78 | 81 | import org.htmlunit.javascript.host.intl.Intl; |
@@ -861,9 +864,18 @@ protected String getSourceCode(final Context cx) { |
861 | 864 |
|
862 | 865 | private static VarScope getScope(final HtmlPage page, final DomNode node) { |
863 | 866 | final TopLevel topLevel = page.getEnclosingWindow().getTopLevelScope(); |
864 | | - if (node != null) { |
865 | | - return new WithScope(topLevel, node.getScriptableObject()); |
| 867 | + if (node != null && node instanceof HtmlElement htmlElement) { |
| 868 | + final HTMLElement elem = htmlElement.getScriptableObject(); |
| 869 | + WithScope scope = new WithScope(topLevel, elem.getOwnerDocument()); |
| 870 | + |
| 871 | + final HtmlForm enclosingForm = htmlElement.getEnclosingForm(); |
| 872 | + if (enclosingForm != null) { |
| 873 | + scope = new WithScope(scope, enclosingForm.getScriptableObject()); |
| 874 | + } |
| 875 | + |
| 876 | + return new WithScope(scope, node.getScriptableObject()); |
866 | 877 | } |
| 878 | + |
867 | 879 | return topLevel; |
868 | 880 | } |
869 | 881 |
|
|
0 commit comments