au お客様サポートがOperaで動かない.本件についてau に問い合せた結果、Operaで動作確認取れています。ちゃんと表示されます。というよく分らない回答.
わたしゃ、クリックEventがおかしいと言っているのがですが.
Operaでau お客様サポートサイトを動かす方法
https://cs.kddi.com/html/js/ht_top_submitInterceptor.js を禁止URLに入れてブロックする
以前は、#https://cs.kddi.com/html/js/ht_submitInterceptor.js #=>2013-04-01からアドレスが変わったよ
これが一番手っ取り早い.
理由.ProtypeJSで、外部リンクと内部リンクを切り分けてターゲットを変えてるらしいんですけど,コードがおかしい.手っ取り早いのは,OnClickのEventのファイルを読み込まないこと.
2013-04-04追加 デザイン変更後も相変わらずです。
サイトデザイン変更後も相変わらずOperaで動かない。。。
相変わらず、submit interceptor がオカシイ。
https://cs.kddi.com/html/js/ht_top_submitInterceptor.js を禁止URLに入れてブロックする
(スクリーンショット 2013-04-04 0.11.03)
名前からして、面倒なことやってそうですよね。submit_interceptor.js 送信割り込み.jsって
なにをやってるか追いかけてみたら
イベントハンドラを作るあたり。
Object.Interceptor = { ignores: [], _pointcut: function(target, methodName, invoke) { var method = target[methodName]; target[methodName] = function() { var invocation = { "target": this, "method": method, "methodName": methodName, "arguments": arguments, "proceed": function() { if (!method) { return true; } return method.apply(target, this.arguments); } }; return invoke.apply(null, [invocation]); }; }, pointcut: function(target, methodName, aspect) { this._pointcut(target, methodName, aspect); }, submit: function(formId) { var invocation = { "target": this, "proceed": function() { return !duringSuppression; } } if (checkLoading(invocation)) { document.getElementById(formId).submit(); } } }
で実際に呼び出される関数がコッチ
function (invocation) { var result = invocation.proceed(); if (result !== false) { if (duringSuppression) { //alert("2度押し防止機能発動"); return false; } //testSleep(5); target = invocation.target; if (isSuppressTargetLink(target)) { var dummyForm = document.getElementById("dummyForm"); var dummySubmit; var action = invocation.target.href; if (!dummyForm) { dummyForm = document.createElement("form"); dummyForm.id = "dummyForm"; dummyForm.method = "get"; dummyForm.style.display = "none"; if (!action.startsWith("javascript:")) { var queryIndex = action.indexOf("?"); var queryString; if (queryIndex != -1) { queryString = action.substring(queryIndex); action = action.substr(0, queryIndex); } if (queryString) { // 先頭の?を除去 queryString = queryString.substring(1); var pair = queryString.split("&"); for (var i = 0; i < pair.length; i++) { var param = pair[i].split("="); var dummyHidden = document.createElement("input"); dummyHidden.type = "hidden"; dummyHidden.name = param[0]; dummyHidden.value = param[1]; dummyForm.appendChild(dummyHidden); } } } dummySubmit = document.createElement("input"); dummySubmit.id = "dummySubmit"; dummySubmit.type = "submit"; dummyForm.appendChild(dummySubmit); document.body.appendChild(dummyForm); Object.Interceptor.pointcut(dummySubmit, "onclick", checkLoading); } else { dummySubmit = document.getElementById("dummySubmit"); } dummyForm.action = action; dummySubmit.click(); duringSuppression = true; return false; } else if (isSuppressTargetForm(target)) { if (!isIE && !isWebKit) { target.disabled = true; } duringSuppression = true; } } return result; }
二度押し防止ですって。しかも、GET を?文字列で検出してる。
2度押しされたくなければ element 毎ノードから消しなよ。っていうか二度押しされて問題あるようなページ遷移作っちゃダメでしょ・・・au お客様サポートはクソなのでFenrirあたりにやっていただきたい。