また図々しい質問で申し訳ないのですが、ライブドアの件なのですが、長い記事を書くと、スマホ版では、たぶん6000文字程度のところで分割されてしまい、次のページにされてしまいます。
これを、自分でエディタからscriptを入れて、なんとか分割されないようにできないものかと悩んでいます。
これについて、Chromeでソースを調べると、スマホ版でも、記事内容は、全部読み込んでいるのに、表示はされておらず、エレメントとしても、入っていないです。
なので、scriptでページネーションをやっているんだろうと思って、調べたら、たぶんですが、http://parts.blog.livedoor.jp/js/jquery-1.7.1.min.js ←この中のどれかがそうだろうと思います。
スマホ版で読み込んでいるほかのscriptには、記事内容を分割するようなものが、見当たらないので、この中にあるのだろうと。
ですが…私には、どれがそうなのかがわからないのと、そのコードを無効化するような逆コードが書けないんです…。
上のscriptへのlinkは、エディタよりも上で読んでいるので、エディタから書き込めば、そっちのほうが効くと思います。
急ぎませんので、もしも、お時間のあるときに、気が向いたときでけっこうですから、ご協力をいただけると、非常に助かります…。よろしくお願いいたします。
p.next とか a[rel="next"] な要素があったら、次のページを XHR とかで読み込んで無理やり貼り付けるとかでしょうか。
「続きを読む」があったら、次のページを読み込んで記事に追加するスクリプトです。
document.addEventListener("DOMContentLoaded", function() { var read_next = document.querySelector('a[rel="next"]'); if (read_next) { var xhr = new XMLHttpRequest(); xhr.onload = function(ev) { if (ev.target.status == 200) { var resp_doc = ev.target.response; // clone article var next_article = resp_doc.getElementById("article-contents"); var article = document.getElementById("article-contents"); if (next_article && article) { var e = next_article.firstChild do { article.appendChild(e.cloneNode(true)); e = e.nextSibling; } while (e); } // remove "read next" var area = read_next.parentNode.parentNode; area.parentNode.removeChild(area); } }; var url = read_next.href; xhr.open('GET', url, true); xhr.responseType = 'document'; xhr.send(null); } });
自分で言うのもなんですが、無理やりな感じです。
2ページ目までしか見てませんし、コメントに書いたように広告やアクセスカウンタなど、元々のブログに持っているスクリプトがきちんと動かない可能性もあります。
また、トップページと潜水ドローンの記事のページをざっと見ただけなので、テンプレートに仕込むときは要注意です。
あと、ぽけっとしすてむさんからコメントがあった、これ。
ライブドアブログのスマートフォン版は、スクリプト設置に幾つかの制限があったように思います。
最近のブラウザなら大丈夫な範囲で書いたつもりですが、ブログのシステムとして何かしらの制限を入れていると動かないかもしれません。
…ですが、ひとつ問題が、自力カスタムで、web拍手をスマホのほうにもつけるようにしていたんですが、本来は2ページ目の記事が終わった直後に表示をさせるようにしていたのですが、それは読み込まれていません。
拍手の対応をしてみました。先のスクリプトと入れ替えてみてください。
document.addEventListener("DOMContentLoaded", function() { var read_next = document.querySelector('a[rel="next"]'); if (read_next) { var xhr = new XMLHttpRequest(); xhr.onload = function(ev) { if (ev.target.status == 200) { var resp_doc = ev.target.response; var next_article = resp_doc.getElementById("article-contents"); var article = document.getElementById("article-contents"); if (next_article && article) { var e = next_article.firstChild; var clap_script; do { var clone = e.cloneNode(true); if (clone.nodeType == 1) { Array.prototype.forEach.call(clone.querySelectorAll("script"), function(script) { if (/livedoorProfileClap/.test(script.innerHTML)) { clap_script = script; } }); } article.appendChild(clone); e = e.nextSibling; } while (e); if (clap_script) { e = document.createElement("script"); e.onload = function() { var write_ = document.write; var htmls = []; document.write = [].push.bind(htmls); var script = new Function(clap_script.innerHTML); script.call(); var e = document.createElement("span"); e.innerHTML = htmls.join(""); clap_script.parentNode.insertBefore(e, clap_script.nextSibling); document.write = write_; }; e.src = "//portal.profile.livedoor.com/js/livedoor_profile_clap.js"; article.appendChild(e); } } var area = read_next.parentNode.parentNode; area.parentNode.removeChild(area); } }; var url = read_next.href; xhr.open('GET', url, true); xhr.responseType = 'document'; xhr.send(null); } });
スクリプトに、拍手用の外部スクリプトの URL を書いている辺り、なんともかっこ悪いですが、元々の拍手のスクリプトも記事中に URL を書いちゃってますから、良いですよね (^^;
# スクリプトの一部を書き換えました m(_ _)m
# またまたスクリプトの一部を書き換えました
p.next とか a[rel="next"] な要素があったら、次のページを XHR とかで読み込んで無理やり貼り付けるとかでしょうか。
「続きを読む」があったら、次のページを読み込んで記事に追加するスクリプトです。
document.addEventListener("DOMContentLoaded", function() { var read_next = document.querySelector('a[rel="next"]'); if (read_next) { var xhr = new XMLHttpRequest(); xhr.onload = function(ev) { if (ev.target.status == 200) { var resp_doc = ev.target.response; // clone article var next_article = resp_doc.getElementById("article-contents"); var article = document.getElementById("article-contents"); if (next_article && article) { var e = next_article.firstChild do { article.appendChild(e.cloneNode(true)); e = e.nextSibling; } while (e); } // remove "read next" var area = read_next.parentNode.parentNode; area.parentNode.removeChild(area); } }; var url = read_next.href; xhr.open('GET', url, true); xhr.responseType = 'document'; xhr.send(null); } });
自分で言うのもなんですが、無理やりな感じです。
2ページ目までしか見てませんし、コメントに書いたように広告やアクセスカウンタなど、元々のブログに持っているスクリプトがきちんと動かない可能性もあります。
また、トップページと潜水ドローンの記事のページをざっと見ただけなので、テンプレートに仕込むときは要注意です。
あと、ぽけっとしすてむさんからコメントがあった、これ。
ライブドアブログのスマートフォン版は、スクリプト設置に幾つかの制限があったように思います。
最近のブラウザなら大丈夫な範囲で書いたつもりですが、ブログのシステムとして何かしらの制限を入れていると動かないかもしれません。
…ですが、ひとつ問題が、自力カスタムで、web拍手をスマホのほうにもつけるようにしていたんですが、本来は2ページ目の記事が終わった直後に表示をさせるようにしていたのですが、それは読み込まれていません。
拍手の対応をしてみました。先のスクリプトと入れ替えてみてください。
document.addEventListener("DOMContentLoaded", function() { var read_next = document.querySelector('a[rel="next"]'); if (read_next) { var xhr = new XMLHttpRequest(); xhr.onload = function(ev) { if (ev.target.status == 200) { var resp_doc = ev.target.response; var next_article = resp_doc.getElementById("article-contents"); var article = document.getElementById("article-contents"); if (next_article && article) { var e = next_article.firstChild; var clap_script; do { var clone = e.cloneNode(true); if (clone.nodeType == 1) { Array.prototype.forEach.call(clone.querySelectorAll("script"), function(script) { if (/livedoorProfileClap/.test(script.innerHTML)) { clap_script = script; } }); } article.appendChild(clone); e = e.nextSibling; } while (e); if (clap_script) { e = document.createElement("script"); e.onload = function() { var write_ = document.write; var htmls = []; document.write = [].push.bind(htmls); var script = new Function(clap_script.innerHTML); script.call(); var e = document.createElement("span"); e.innerHTML = htmls.join(""); clap_script.parentNode.insertBefore(e, clap_script.nextSibling); document.write = write_; }; e.src = "//portal.profile.livedoor.com/js/livedoor_profile_clap.js"; article.appendChild(e); } } var area = read_next.parentNode.parentNode; area.parentNode.removeChild(area); } }; var url = read_next.href; xhr.open('GET', url, true); xhr.responseType = 'document'; xhr.send(null); } });
スクリプトに、拍手用の外部スクリプトの URL を書いている辺り、なんともかっこ悪いですが、元々の拍手のスクリプトも記事中に URL を書いちゃってますから、良いですよね (^^;
# スクリプトの一部を書き換えました m(_ _)m
# またまたスクリプトの一部を書き換えました
ぼくも、いろいろと気付きがあって楽しかった :-)
ちなみに、3分割の記事ってどれです?
本当に、助かりました。
3分割の記事は、いくつかあったような気がしますが、例えばこれです。
http://cumbersome.ldblog.jp/archives/10150889.html
この記事の場合には、内容を削って2ページにおさめるというのも、なかなか難しいし、キリのいいところで別記事を立てるというわけにもいかないので、仕方がないなと。ですが、これだけの内容を読むのに、2回もページをめくらなければならないとなったら、めくってまで全部見て行くというスマホ閲覧者は、なかなか少ないというのが現状です。
ぼくも、いろいろと気付きがあって楽しかった :-)
2016/12/23 00:28:24ちなみに、3分割の記事ってどれです?
本当に、助かりました。
2016/12/23 01:18:273分割の記事は、いくつかあったような気がしますが、例えばこれです。
http://cumbersome.ldblog.jp/archives/10150889.html
この記事の場合には、内容を削って2ページにおさめるというのも、なかなか難しいし、キリのいいところで別記事を立てるというわけにもいかないので、仕方がないなと。ですが、これだけの内容を読むのに、2回もページをめくらなければならないとなったら、めくってまで全部見て行くというスマホ閲覧者は、なかなか少ないというのが現状です。