1

説明させてください。特定の DOM 要素の特定の属性を探しているわけではありません。bodybackground-color要素のを調べると、ページの背景色がわかると思い始めました。

しかし、たとえばこのサイトの場合:パフォーマンス バイクのボディの背景色は黒で、サイトのメインの背景色がであることは「明白」です。

そのため、サイトをPhantomJSで解析しています。最も「目に見える」背景色を見つけることができるようにするための良い戦略は何だと思いますか. 何と言えばいいのかわかりませんが、人間にとって背景の色は明らかです。プログラムでそれを見つける方法は?

編集: バイク サイトは単なる例です。「任意の」ページでこれを行う方法を考えています。

4

5 に答える 5

0

このようなものはどうですか?

完全ではありませんが、最大の領域を持つ要素を返し、それが表示されるようにする必要があります。それが他の要素の下にあることを説明しませんが、それは始まりです...

var element={
    width:0,
    height:0,
    color:'',
    jQEl:{}
}

$('*:visible').each(function(){
    var $this = $(this);
    var area = element.width*element.height;
    var thisArea = $this.width()*$this.height();
    if(thisArea>area){
        element.width = $this.width();
        element.height= $this.height();
        element.color=$this.css('background-color');
        element.jQEl=$this;
    }
});

console.log(element)
于 2013-11-13T23:16:30.650 に答える
0

パフォーマンス バイク サイトの背景色は です transparent。しかし、なんらかの理由で、メイン全体をdiv配置することにしたabsoluteため、bodyタグが1px高くなり、デフォルトの白い色が表示されます。私が持っている1つのアイデアは、bodyの高さがウィンドウの何パーセント未満かを確認できるということです。小さすぎる場合は、おそらくwhite、またはtransparent一部の特別なブラウザの場合です。

ページのスクリーンショットを撮り、そこから背景色を決定するなどの代替手段。

于 2013-11-13T22:55:57.023 に答える
0

スクリーンショットを撮り、画像のヒストグラムを作成して、最も一般的な色を見つけます。

改良点:

  • 最初に、すべてのテキスト コンテンツを「& nbsp;」に置き換えます。
  • 画面の端に最も近いピクセルに特別な重みを付けます。

(PhantomJS 内で完全に自動化するには、http://html2canvas.hertzen.com/ のようなものを使用してキャンバスを使用できる場合があり、外部の画像ファイルを作成する必要はありません。)

于 2013-11-14T03:07:49.573 に答える
0

JavaScriptを使用して、どのレイヤーが一番上にあるか、そのdivの幅と高さを確認してから、その背景色プロパティを取得するだけです.

于 2013-11-13T22:59:40.867 に答える