0

有効なオブジェクトを指すインターフェイス参照( Documentのインスタンス)があります。問題は、 DOMの特定の要素に関連付けられたスタイル属性を表示したいのですが、インライン属性のみを公開することです(スタイルは外部スタイルシートを介して設定されています)。最終的な目標は、関連する計算されたスタイルを表示したいので、ViewCSSへの参照を取得することです-これをどのように行うのですか?DocumentViewオブジェクトを取得する必要があるかもしれないと思います(もしそうなら、前述のオブジェクトを返すメソッドが見つからなかったので、どうすればよいですか)?


Document document = ...;

document.getImplementation().hasFeature("Views", "2.0"));

これはtrueを返します。

Object obj = document.getImplementation().getFeature("Views", "2.0");

これにより、 java.lang.UnsupportedOperationExceptionがスローされます。まだサポートされていません。


何が間違っているのか、それを修正する方法、そしてこれを実行するための最良の方法は何ですか(このドキュメントに関連する計算されたスタイルを表示/変更したい)?ありがとうございました。

編集

これは、最初に提供されるべき詳細の重要な部分だと思います。

java.lang.UnsupportedOperationException: Not supported yet.
    at com.sun.webpane.webkit.dom.NodeImpl.getFeature(Unknown Source)

返されたDocumentオブジェクトは、WebEngineでトリガーされたjavafxパッケージからのものでした。

4

3 に答える 3

3

このフラグメントがあなたの問題を解決するかもしれません:

Document doc = ???;
HTMLDocument htmlDoc = (HTMLDocument)doc;
final HTMLBodyElement body = (HTMLBodyElement)htmlDoc.getBody();

//JS [window] access
DOMWindowImpl wnd =
        (DOMWindowImpl)((DocumentView)htmlDoc).getDefaultView();

//Style access
CSSStyleDeclaration style = wnd.getComputedStyle(body, "");
assertEquals("Style extraction", "blue", style.getPropertyValue("background-color"));
于 2012-08-03T16:32:12.353 に答える
2

問題は、Webkit の [Source/WebCore/dom/Node.idl] が [getFeature] メソッドをサポートしていないことです。

#if 0
        DOMObject          getFeature(in DOMString feature, 
                                      in DOMString version);
        DOMUserData        setUserData(in DOMString key, 
                                       in DOMUserData data, 
                                       in UserDataHandler handler);
        DOMUserData        getUserData(in DOMString key);
#endif /* 0 */

したがって、私ができる唯一のことは、[com.sun.webpane.webkit.dom.DOMImplementationImpl.java]、[com.sun.webpane.webkit.dom.NodeImpl.java] でスタブを作成することです。

public Object getFeature(String feature, String version) {
    throw new UnsupportedOperationException("Not supported yet.");
}

それが特徴です。よろしく、-うた

于 2012-08-03T16:13:42.190 に答える
1

document.getImplementation() によって返されるクラスを確認できますか (その .getClass() を出力してみてください)

私の最善の推測では、.getFeature() は Java 5 の機能拡張であり、クラスパスに DOMImplementation の不完全な実装があるようです。ロードされている実際のクラスを取得し、そのドキュメントを確認して、 getFeatures() メソッドの実装があるかどうかを確認してください。

于 2012-07-31T09:39:17.743 に答える