のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,646,399人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレ+ JavaScript の質問用スレッド vol.116 +

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
151 : Name_Not - 2014/06/02(月) 16:17:25.32 ID:???.net (+65,+29,-14)
>>147
何もしなくていいよ
152 : 147 - 2014/06/02(月) 16:22:53.17 ID:???.net (+0,-28,-4)
CSSにemという単位がありました
ありがとうございました
153 : Name_Not - 2014/06/02(月) 16:46:31.11 ID:???.net (+5,-29,-24)
>>149
海外のプログラマーもmizchiのブログをチェックするぐらい有名だし
mizchiが働いてる企業も有名
154 : Name_Not - 2014/06/02(月) 18:36:41.69 ID:???.net (-1,-29,-27)
mouseoverなどが設定されている巨大なテーブルを表示したら
既存のpopoverなどの動作がすごく遅くなりました
どうしたらいいでしょうか?
155 : Name_Not - 2014/06/02(月) 18:39:09.11 ID:???.net (+4,-23,-42)
ちなみに巨大といっても200行くらいです
jqueryプラグインなので内部で何してるかしりませんが
mouseの動きに追随して行の色が変わるのでmouseoverと思われます
156 : Name_Not - 2014/06/02(月) 19:06:48.43 ID:???.net (+57,+29,-42)
そのプラグインを使わない
自分で修正したりカスタマイズしたり検索して調べられない人は人様のプラグインを使うべきではない
157 : Name_Not - 2014/06/02(月) 20:02:33.71 ID:???.net (+36,-29,-52)
テーブル毎に設定しているmouseoverから
ひとつの要素にmousemoveを設定して、マウス座標からマスの位置を計算してみてはどうでしょうか
158 : Name_Not - 2014/06/02(月) 22:14:29.76 ID:???.net (-1,-29,-1)
>>157
mouseoverも一つの要素で十分だよ
160 : Name_Not - 2014/06/03(火) 02:26:39.04 ID:???.net (+32,-1,-51)
そのメソッドからは新しいオブジェクトを返して、
呼び出しもとでそれを上書きしたい変数に代入する
161 : Name_Not - 2014/06/03(火) 05:35:41.36 ID:???.net (+62,+29,-35)
ライブラリ関連の質問は、ライブラリ用のスレでやるべき
その方が、情報が分散しないので調べやすく、効率もいい

このスレで、ライブラリ関連の質問を扱う、利点がない
情報を分散させるな
自分を情報に適応させればいいだけ
162 : Name_Not - 2014/06/03(火) 06:27:03.66 ID:???.net (+17,-30,-266)
>>160
それだとオブジェクトが複数の場所から参照されている場合に同期しなくなる

>>159
一般的には
元のオブジェクト A を参照するオブジェクト B を作って、
(1) コード内で A を利用している所はすべて B に置換
A へのメンバアクセスはすべて Bを経由
(2) 「オブジェクトそのものを変える」ときには Bの中のAへの参照を別オブジェクトに変える

具体的には
(1) には prototype 継承が利用できる
return new A

B = {}; B.__proto__ = A; return B に変える
その場合、 (2)も単に B.__proto__ = C

(__proto__ 未サポート実装にも対応させる場合は等価なコード 以下略)
163 : Name_Not - 2014/06/03(火) 07:13:41.38 ID:???.net (+57,+29,-9)
スウィフト登場でJavaScript死亡って聞きましたがマジですか?
164 : Name_Not - 2014/06/03(火) 07:25:08.97 ID:???.net (+62,+29,-24)
>>157
行の高さが固定ではないので計算が難しいですが
固定にしたら計算量を減らせそうです
ありがとうございました
165 : Name_Not - 2014/06/03(火) 07:55:13.42 ID:???.net (+56,+28,-47)
JSはlodashの機能をネイティブに取り込んでいったらまだまだ戦える
166 : Name_Not - 2014/06/03(火) 16:16:11.01 ID:VSsQ6kDA.net (+27,+29,-5)
>>162
なかなか手間が掛かるんですね……
ありがとうございました!
167 : Name_Not - 2014/06/03(火) 17:40:18.35 ID:???.net (-1,-29,-12)
Swiftは構文がCとは大分違ってて若干気持ち悪いな…
JavaScript以外はTypeScriptがあれば十分だ
168 : Name_Not - 2014/06/03(火) 18:38:52.41 ID:???.net (+13,-30,+0)
ここに長くいる人に質問なんだが

今、XMLHttpRequestで今まで経験した事ないバグに悩まされている…
それでここで過去に同じような報告あったか知ってる人いないかな?と思い投稿に至る。

バグは条件が決まってて…説明長くなるけどすまん

まず、ロリポップのサーバーでしか起きない。
自分のPC上に構築したローカル環境と無料サーバーatpagesでは起きなかった。

プログラム構成は
AファイルからJavascriptでXMLHttpRequestを作り、
XMLHttpRequest.sendのPOSTで同じディレクトリにあるPHPにデータ送るだけ。
送るデータは「<img src="../" width="" class="" alt="" />」この文字をencodeURIComponentでエスケープした物。

発生するバグは上記のデータ1つだと正常にPHPが呼ばれるけど
「<img src="../" width="" class="" alt="" /><img src="../" width="" class="" alt="" />」のように2つ以上にすると
XMLHttpRequest.statusに「403 サーバーからアクセスを拒否された」が返ってきてPHPにまでデータが届かない…。
それで色々試した所、上のタグの「../」部分をどちらか片方だけ返ると403にならないで200(正常)になることが判明。
例えば「../」ではなく「.,/」(ドットを1個カンマに変更)に変えるとかで動くんだ…。
じゃあと思いimgタグとか外して「../../」とかにてもバグらない。
どうしても上のimgタグ2列以上のデータのままじゃないとバグらない不思議。
ドットが悪いのかと思い、ドットを正規表現で「%2e」に変換しても何故か403!
しっかり変換されてることは確認済み。

送信する文字数過多でサーバーからはじかれてる?とも思ったがこれは大丈夫だった。
「11111111111111111111」というデータを上のバグるデータの8倍の長さで送信したけど403にはならなかった。

ブラウザはIE8、Chorme34.0.1847.137(最新)、Firefox29.0.1で試したが全部同じ

実データはバグるパターンのデータが必要なので悩んでる・・・。
どうも一定条件そろった時だけ出る未知のバグな気がして相当悩んでる・・・。過去に同じ事で悩んだ人ここにいなかったかな?
170 : 168 - 2014/06/03(火) 19:45:11.27 ID:???.net (+66,+29,-124)
>>169
やっぱりサーバーっぽいか…
今確認したらHTTPリクエストのログまでは見れたけどエラーログまで見る機能はないっぽい…
HTTPリクエストのログの方にも403が表示されてるだけで情報となりそうな物はなかった

ちなみに今妄想で疑っているのが
ロリポップサーバーだけウイルスチェックフィルターみたいのがあって送信されてくるデータをチェックしてて
下のimgタグ2個以上の内容が偶然そのフィルターにひっかかるのかなーとか思ってる…
171 : Name_Not - 2014/06/03(火) 19:50:42.59 ID:???.net (+57,+29,-4)
俺もそう思った
変な攻撃と思われてるのかも
172 : Name_Not - 2014/06/03(火) 19:59:50.05 ID:???.net (+13,-30,-26)
>>170
適当なロリポ鯖に「?a=../../"""」でアクセスしてみると403になるな・・
他にも?a='--でもなった
とりあえずWAF設定OFFにしてみろ
173 : Name_Not - 2014/06/03(火) 20:00:38.55 ID:???.net (+5,-29,-19)
なにかしら他の形式(Base64とか)にエンコードして、サーバ側でデコードするとかはできないん?
174 : Name_Not - 2014/06/03(火) 21:02:43.47 ID:???.net (+4,-29,-179)
>>172
おおおおお!!ずばりそれだ!助かった!
WAFの存在知らなかったわ…そして設定変更できるのも今知った…こんな機能があったのだな
WAFの所にもログ表示があって見事に弾かれてた…恥ずかしい限りだ、、
それにしてもURLエンコードかかってる状態でも弾くとはなんて強力な機能
ちなみに「../ ../ w>」でも「%2e%2e%2F%20%2e%2e%2F%20w%3E」でも弾かれる

原因わかってスッキリした
みんなありがとう!

>>173
エンコードしても弾かれるんだこれ
でも修正案のヒントになったのでありがとう!
引っかかるデータを一時的に全角文字に変換しPHP側で半角に戻すやり方おもいついた
WAFをONのまま運用したほうがセキュリティーは高くなるし

お騒がせしました
175 : Name_Not - 2014/06/03(火) 21:32:36.02 ID:???.net (-1,-29,-63)
twitter.comではconsole.logが使えないんですけど
たぶんwindow.consoleを上書きされてるからなんでしょうが
これを使えるようにする方法を教えてください
176 : Name_Not - 2014/06/03(火) 23:07:03.31 ID:???.net (+55,-30,-56)
質問です
re =RegExp('a|b|c')
while( re..exec(str) )でマッチした部分がaだった場合のみreplaceする方法ってありますか?
execの結果を利用できると助かるんですが
177 : Name_Not - 2014/06/03(火) 23:11:58.49 ID:???.net (+30,-29,-1)
str.replace(/a/g, 'b');
178 : Name_Not - 2014/06/03(火) 23:27:04.29 ID:???.net (+10,-30,-69)
>>176
var str = "abcdef";
var re = RegExp('a|b|c') ;
var func = function(str) {return (str == "a") ? "0" : str};
str = str.replace(re, func); // str => 0bcdef
179 : Name_Not - 2014/06/04(水) 00:43:36.24 ID:???.net (+38,-30,-36)
>>178
冗長で気持ち悪い。

var str = "abcdef";
str = str.replace(/a|b|c/g, function(ch) {
 return (ch == "a") ? "0" : str;
});
180 : Name_Not - 2014/06/04(水) 00:47:37.25 ID:???.net (+29,+1,-30)
マッチした部分がaだった場合のみなのにaもbもcもマッチしてないかそれ
181 : Name_Not - 2014/06/04(水) 01:01:45.19 ID:???.net (+69,+29,-4)
>>179
わかりやすさ優先させた
お前こそなんでstr返してるんだ
182 : Name_Not - 2014/06/04(水) 01:11:26.86 ID:???.net (+46,-30,-58)
>>181
元のコードがわかりにくいから間違えたw
近い場所で同じ変数名使いまわすんじゃねーよ。

var str = "abcdef";
str = str.replace(/a|b|c/g, function(ch) {
 return (ch == "a") ? "0" : ch;
});
183 : 176 - 2014/06/04(水) 01:19:36.51 ID:???.net (+60,+27,-32)
>>177-182
ありがとうございますreplaceの引数の関数でこんないろいろできるとは知りませんでした
こっちでやってみます
184 : Name_Not - 2014/06/04(水) 03:17:43.35 ID:???.net (+66,+29,-4)
>>182
そういやそうだごめん
先に関数内作って>>176に合わせたらこんな事に
185 : Name_Not - 2014/06/04(水) 07:52:34.40 ID:???.net (+9,-30,-195)
Greasemonkey で Web版Twitterのツイート内容の変換を試みています。

$("body").on("mouseover","div.ProfileTweet.u-textBreak.js-tweet.js-stream-tweet.js-actionable-tweet", function(){
var elm = $(this);
elm.html( replaceAll(elm.html(), wordMap) );
});
//replaceAll は自作関数です

各ツイート(後からAjaxで追加されたものも含む)の変換は mouseover で発動します。
ただ本当にやりたいのは追加されたら勝手に発動して欲しいのです。
タイマー以外のスマートな方法で実現できないでしょうか?
186 : Name_Not - 2014/06/04(水) 08:04:36.42 ID:???.net (+10,-30,-127)
>>185
普通にDOMの MutationObserver でできない?

developer.mozilla.org/ja/docs/Web/API/MutationObserver

に例が載ってるよ
187 : Name_Not - 2014/06/04(水) 09:14:00.38 ID:???.net (+4,-30,+0)
var tweetSelector = "div.ProfileTweet.u-textBreak.js-tweet.js-stream-tweet.js-actionable-tweet";

function twitterTransform(elm){
elm.html( replaceAll(elm.html(), wordMap) );
elm.click(function() {
window.open("https://twitter.com/"+$(this).attr("data-screen-name")+"/status/"+$(this).attr("data-item-id"));
return false;
});
}

$(tweetSelector).each(function(){
twitterTransform($(this));
});

new MutationObserver(function(arr,mo){
for(var i=0; i<arr.length; ++i){
var children = arr[i].addedNodes;
for(var j=0; j<children.length; ++j){
twitterTransform( $(children[j]).find(tweetSelector) );
}
}
}).observe($("div.GridTimeline-items")[0], { childList: true });


>>186 ありがとうございます。できました。
単語置換の他にツイートクリック時に別タブで開けるようにもなりました。
188 : Name_Not - 2014/06/04(水) 13:28:06.19 ID:???.net (+60,+21,-38)
すいません便乗ですいません
twitterにajaxで取得する場合って秒数は1秒ごとってやばいですか?
189 : Name_Not - 2014/06/04(水) 13:33:49.15 ID:???.net (+20,-15,-4)
>>188
TwitterのAPIはそもそも回数制限あるだろ
190 : Name_Not - 2014/06/04(水) 16:06:14.93 ID:???.net (+3,-30,-121)
jqueryで、削除時ハンドラみたいなことが出来ることを知りました

$.when($('#test').remove()).then(function(){
console.log('removed');
});
$('#test').remove();

という感じに使えます。これって内部的にどういう処理してるんですか?
191 : Name_Not - 2014/06/04(水) 16:13:11.45 ID:???.net (+57,+29,-3)
なんか思ってたのと違ったようです
失礼しました
192 : Name_Not - 2014/06/04(水) 16:14:52.54 ID:???.net (+64,+29,-17)
ある要素が削除された時に指定したコールバックを実行する
ってやりたいんですが、どうやればいいですか?
193 : Name_Not - 2014/06/04(水) 19:33:11.07 ID:???.net (+11,-30,-118)
>>192
html
<div id="test">
<div id="hoge">hogehoge</div>
</div>

js
$('#test').bind('DOMNodeRemoved',function() { alert(1); });

// $('#hoge').remove();
194 : Name_Not - 2014/06/04(水) 19:41:26.39 ID:???.net (+57,+29,-2)
こんな便利なイベントがあったんですね
ありがとうございました
195 : Name_Not - 2014/06/04(水) 20:43:44.09 ID:???.net (-1,-29,-42)
DOMNodeRemoved、またブラウザ依存しそうなイベントだなw
196 : Name_Not - 2014/06/04(水) 23:01:30.40 ID:???.net (+63,+28,-12)
===を使うのは、比較対象が引数など型が自明じゃない場合だけの方がいいですか?
それとも必ず===の方がいいですか?
197 : Name_Not - 2014/06/04(水) 23:20:09.22 ID:???.net (+65,-22,-7)
>>196
面倒なので全部===にしてるな
===だと都合が悪いときだけ==にする

のようなやり方だと都合が悪いケースってあるのかな
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について