広告ごとコメント欄を折りたたむ

このBlogをどういう形で見ているかはわからないけど、

最近、個別記事のページの下の方で広告が気になってた人がいるかもしれない。

これはコメント機能のために利用しているDisqusが付けている広告で、

有償サービスを利用すれば広告が付かないとかあるのだが、そこまでするほどの価値は見いだせない。

ただ、この広告、さすがに低俗に過ぎるのではないか。


けっこうそういう不満を持つ人は多いようで、打開策の1つとして普段は閉じておくという方法が書かれていた。

確かにコメントを書いたり読んだりしたいというのは稀だろうから、

その場合だけ表示すればいいのはその通りである。

Disqusのコメント表示を行うdiv要素を非表示にするには、

スタイルシートでdiplay:none; を設定すればよい。

その上で、リンクをクリックしたら document.getElementById(“disqus_thread”).style.display=”block” にセットすればよいだろう。

ところがこの方法には それは#disqus_threadへのリンクで、コメントの位置にジャンプできないという問題があった。


どういうことかというと display:none; が設定された要素は存在しないのと同じ扱いになる。

このためid=”disqus_thread”の設定されたブロック自体が消失してしまうのである。

結果として #disqus_threadへのリンクが機能しなくなるわけである。

うーん、一体どうすればいいんだろうか。


いろいろ調べたところ、代替策としてはリンクをクリックしたら、画面の位置を動かすという方法があるようだ。

具体的にはこんなJavaScriptを記述することで解決した。

if(!location.hash){
  var disqus_block = document.getElementById("disqus_thread");
  var disqus_pos = disqus_block.getBoundingClientRect().top
+ window.pageYOffset;
  disqus_block.style.display="none";
  var links = document.getElementsByTagName("a");
  for(var i = 0; i < links.length; i++  ){
    if(links[i].getAttribute("href").indexOf("#disqus_thread") >= 0){
      links[i].onclick = function(){
        document.getElementById("disqus_thread").style.display="block";
        window.scrollTo(0, disqus_pos);
      };
    }
  } }

#disqus_thread などページ内のアンカーを指定してのリンクの場合は、普通に表示する。

そうでない場合は、id=”disqus_thread”の要素を style.display=”none”に設定するが、

その前にこの要素のY座標をdisqus_posとして保存しておく。

その上で #disqus_threadへのリンクのonclickイベントとして下記2つを記述する。

1つはid=”disqus_thread”の要素を style.display=”block”にして表示状態にすること。

もう1つはdisqus_posに保存して置いたY座標に画面をジャンプさせる。

(ちなみにこの記述は他ページの#disqus_threadへのリンクまで書き換えてしまうので厳密ではないが、実態からよしとしている)


それはそうとして広告の質の低さというのはここ最近、いろいろと問題になっている。

Disqusの広告はただただ低俗というぐらいでそこまでではないけど、

あるアプリでは明らかな違法コンテンツに向けた広告が表示されたり、

いかにも人を不快にさせるような広告に埋め尽くされたり……

オレンジページから“性的広告”は消えたが、「足の爪どアップ」や「インプラントの歯茎」もツラい (ITmedia)

料理のサイトに性的なコンテンツの広告が表示される事象があり、

当然意図したものではなく、広告ネットワークの審査をかいくぐって表示されたものだったと。

それは意図に反するにしても、じゃあ代わりに表示される広告はなんなんだというと、

足の爪に関する広告だったり、インプラントの広告だったり、それはそれで不快と。


見ている人にとって何らか有益に思ってもらえる広告の方が価値が高いのは言うまでもないが、

そういう広告はなかなか集まらないというのが実情のようである。

代わりに集まる広告は価値も低ければ、単価も安いという状況なのだろう。

それで十分な収益を得るには広告の量も増やさざるを得ない状況で、

画面をブロックして広告を表示するという手法も見られるところである。

かといって有料コンテンツで商売していくのも容易なことではない。

大量に使うなら有料会員になってもいいかもしれないけど、

そんなに使わないものを有料会員限りにされたら、使わないという答えになる。


Disqusもそうで、有料サービスが必須になったら、コメント欄撤去を選びますよ。

このBlogにコメント機能なんてほとんどいらんでしょ。

でも稀に役立つから置いているというのが実情である。

広告があまりに煩わしければ、それすらも受け入れられない状況だったが、

必要時のみ表示するというところで1つ落とし所にしようと。

皆様方におかれてもこの程度はご容赦を。