1

私は、ユーザーがニュース記事や他のWebページへのURLを入力し、自分のページのiFrame内でそのページのコンテンツを表示できるアプレットに取り組んでいます。コンテンツがページに読み込まれると、ユーザーはカーソルを使用して単語を強調表示できます。カーソルは、選択したテキストを配列に格納し(用語の個人辞書に翻訳/追加するため)、テキストを赤いボックスで囲みます。 (div)私のドメインで定義されたスタイルシートによる。これを行うには、cURLを使用して外部ページのHTMLを取得し、それをiFrameのソースにダンプします。

ただし、取得したHTMLで大きなフォーマットの問題が発生し続けます。大きな問題はスタイルシートを保持することです。これを修正するために、DOMDocumentを使用して取得したHTMLのセクションにタグを追加しました。これは一部のページ/URLで機能しますが、他の多くの出力HTMLにはまだ多くのスタイルの問題があります。たとえば、divレイヤーが互いに衝突し、配置がオフになり、背景が失われます。埋め込まれたコンテンツのテキスト選択を渡すためのonClickjavascript関数を機能させるには、出力HTMLを新しいものに埋め込む必要があるため、これは少し問題になります。つまり、結果のソースは次のようになります。

<div onclick="parent.selectionFunction()" id ="studyContentn">

<!-- HTML of output from cURL, including doctype declarations and <html>,<head> tags -->

</div>

ほとんどの場合、私が遭遇し続けるフォーマットの問題の多くは、ほとんど恣意的であるように思われます。php Tidyを使用してHTMLからの出力をクリーンアップしようとしましたが、これは一部のページでのみ機能し、他の多くのページでは機能しません。DOMDocumentを操作するときに奇妙に解析されるCDATA宣言に関係しているのではないかと少し疑っていますが、確かではありません。

cURLからのHTML出力がすべてのインスタンスで正しく忠実にレンダリングされることを保証する方法はありますか?それとも、これを行うためのより良い方法はありますか?私はこの問題に取り組むためのさまざまな方法を試しましたが、それぞれが解決策に近づいていますが、独自の新しい問題ももたらしています。

ありがとう-私が何かを明確にすることができるかどうか私に知らせてください。

4

2 に答える 2

0

私が正しく理解している場合は、完全な Web ページの html を取得して、それを自分のドメインの下の html に表示しようとしています。これは常に注意が必要です。多くの Java スクリプトが機能しなくなり、相対 URL が正しくなくなり、おっしゃったようにスタイルも同様です。ページが表示されるサイズも変更する可能性があります。これらはすべて回避できますが、新しいサイトごとに困難な戦いを繰り広げたり、現在のサイトのデザインが変更されたりする場合があります。

私はおそらく、問題に対して別のアプローチをとるでしょう。代わりに、外部 Web サイトへのインターフェースとしてブラウザー プラグインを作成することをお勧めします。その後、アプレットは、機能し、テスト済みの (できれば) サイトの上に置くことができます。そうすれば、終わりのない厄介な html の問題のリストではなく、アプレットで行う必要があることに集中できます。

于 2012-06-07T14:28:29.843 に答える
0

私は同様のことをしようとしています。フォーマットを維持することは非常に難しく、Web ページの JS スクリプトが複雑になっています。私は最終的に元の形式を完全に表示するという考えを完全にあきらめましたが、回避策でそれを行います:

  1. 興味のあるヘッダー、リンク、リスト、段落のみを選択します。
  2. 自分のサイトのドメイン パスをリンクに追加します。
  3. ヘッダー、リンクなどのアイテムを独自のクラスでラップできます。
  4. テキストを選択して保存する場合に表示します。これは別のトピックです。私が行ったことは、HTMl を 2 つのレベルで解析することであり、選択を行うのは簡単です。IE と Firefox/Chrome は別々に扱う必要があることに注意してください。
于 2012-06-15T09:25:38.413 に答える