>>922 > 「広告を削除」が本来広告が表示されるスペースに広告の画像を表示せず、
> 白地表示だけにする、という意味であれば出来るんじゃないかな。
白地表示にするは現在やっている。
> 広告が表示されるスペース自体を削除しつつ、デザインを崩さない(=広告スペースを削除しない)
> ということであれば、矛盾してるから出来ない。
やっぱそうだよねぇ。広告しかない行をズサーと消して上にあげてくれればいいんだが。
単純に消すと左にコンテンツ、右に広告とかでデザイン崩れたりするし。
>>924 > 特定のページだけを思い通りのレイアウトに
> することは可能。 どのページでもそうしたいのなら不可能。
特定のページじゃなくていろんなページにです。
> それをやるには画像の大きさ
> とかを取得しなきゃいけないわけだけど、ソースにその大きさを書いてないページも多いからね。
それは出来そうな気がする。JavaScriptやbehaviorを使って。処理は読み込んだ後になるけど。
ところでヘッダフィルタのフィルタ適用の順番って フィルタ名順? でもフィルタ名の最初の方ってフィルタの種類で決まる 好きにフィルタの順番かえられないよね。
>>919 <img src="ad.gif">
↓
<img src="ad.gif" style="visibility:hidden">
こういうフィルタを作ればいいのでは。
画像(やその他リンク要素など)の本来のスペースは保持される。
この方法だと画像を読みに行くことにはなるが、
ブロードバンド環境だと気になら無いんじゃないかな。
>>929 これのおかげで↓のフィルタでリファーが完全に消せないことがあるんだよね、どうにか出来ないかな・・
<<リファー加工フィルタ>>
[HTTP headers]
In = FALSE
Out = TRUE
Key = "Referer: Control Referer (Out)"
Match = "\9$LST(RefererControl)"
Replace = "\0"
[HTTP headers]
In = FALSE
Out = TRUE
Key = "Referer: Control Referer After(Out)"
Match = "(^?)"
RefererControl (記述例
------------
$URL(
http://aaa.com/ )$SET(0=\9)
#aaa.comにアクセスするときはリファーを加工せずそのまま送る
$URL(
http://bbb.com/ )$SET(0=
http://uso.com/ )
#bbb.comにアクセスするときは
http://uso.com/ を送る
$URL(
http://ccc.com/ )$SET(0=\u)
#ccc.comにアクセスするするときはアクセス先のURLをリファーとして送る
$TST(\9=
http://ero.com/* )$SET(0=
http://uso.com/ )
#本来のRefererが ero.com/ だった場合は
http://uso.com/ を送る
$TST(\9=(
http://ddd.com/ )\1*)$SET(0=\1)
#本来のRefererが ddd.com/ だった場合は本来のリファーのドメイン部のみ送る
:(中略)
$URL(*)$SET(0=) →上記にマッチしないものはここでリファーが削除される
ただしそのままでは「 Referer: 」という空ヘッダが残るので
Referer: Control Referer After(Out)で完全に消す。
オミトロンを2つ通せばいい。
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´∀`)/< 先生! 「リファー」って何ですか? _ / / / \ _____________________ \⊂ノ ̄ ̄ ̄ ̄\ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
>>930 $URL(*)$SET(0=) を消して、
2番目のフィルタをこうするとか?
Match = "\9(^$LST(RefererControl))"
934 :
930 :04/02/18 21:31 ID:ExwK1+3O
>>933 サンクス! それで残ることは無くなりました。 ありがと!!
935 :
名無し~3.EXE :04/02/19 04:19 ID:RtGchthM
ファイルの拡張子じゃなくて中身を見てMIMEを 変更するフィルタってどうかけばいいの? 拡張子が無くてtext/htmlでjsファイルを返してくる サイトで誤爆して困っている。
>>935 ヘッダをいじるのはファイルを読み込む前にやる必要があるから無理な気がする。
htmlのフィルタでスクリプトのURLを探してリストにぶっこんで、
そのURLだけMIMEを変更するてのはどうよ?
(まあ特定のサイトだけなら自分でリスト作ればいいだけの話だが…。)
ところで、 (<*>&&*(abc|def)\1*) * </$TST(\1)> が <abc>-</abc> にマッチしないんだけど なんで?
>>937 変な挙動だな。
&&の左右を入れ替えたがダメ。
(*(abc|def)\1*&&<*>) * </$TST(\1)>
&&の左辺で終端を確定するとマッチする。
(*(abc|def)\1*>&&<*>) * </$TST(\1)>
でも、&&の左右を元に戻すとマッチしない。
(<*>&&*(abc|def)\1*>) * </$TST(\1)>
そもそもこれ↓でマッチしない。(納得いかん)
(<abc>&&<(abc)\1>)-</$TST(\1)>
&&左辺で\1を使うとOK
(<(abc)\1>&&<abc>)-</$TST(\1)>
940 :
937 :04/02/19 16:10 ID:lkgiGKbD
$LOGコマンドを使っていろいろ試してみたところ、
評価の順序が単純に左から右ではないのが原因らしい。
( A && B ) C の場合、A→C→B の順で評価される。
したがって (<*>&&*$TST(\1)*) * </(abc|def)\1> ならマッチする。
ちなみに ( A & B ) C なら A→C→B→C の順。
(A&B&C)D(E&F&G)H なら ADEHFHGH BDEHFHGH CDEHFHGH
なんかすごく効率悪く見えるんですが…。
>>939 閉店したようですね。
http://wind.prohosting.com/proxmine/contents/
>>938 つまり&&の右辺で代入した場合は$SET(\1=abc)と同様に$TST(\1)が使えないってことかな?
>>939 >>131-132 を書き換えるだけで出来そう。
([^/]+/)+{4} とか使えばもっとすっきりしそう。
グローバル変数と$TSTを使えば1つのフィルタで出来そう。
しかしいざやるとなるとかなり苦労しそう。('A`)
944 :
937 :04/02/19 22:49 ID:lkgiGKbD
あ、 ( A )+{1} B みたいにすれば、A が完全に評価されてから Bが評価されるようだ。(ちなみにBがマッチしなくてもAは再評価されない。) ようするに (<*>&&*(abc|def)\1*)+{1} * </$TST(\1)> とすればよかったんだな。 やっと解決…。
945 :
名無し~3.EXE :04/02/20 07:10 ID:gLKg5G5L
ProxomitronについているWindowOpen.jsなんだけど、コードを 読み間違っていなければwindow.openの関数を変更してPrxOpenにしている。 (本来のwindow.openはPrxRealOpenに変更) 一定時間たった後はPrxRealOpenで通常どおり新しいウインドウを開いて 通常どおり新しく開いたウインドウオブジェクトを返しているけど、 一定時間未満、つまり新しいウインドウを開かない場合、 PrxOpenが返しているのが、return(new PrxNW());の行なんだけど、 これって具体的に何を返しているの? なんかウインドウオブジェクトじゃない気がするんだけど。 newが余計なんじゃないかと思って。 > function PrxNW(){return(this.window);} > function PrxOpen(url,nam,atr){ > if(PrxLC){ > var cdt=new Date(); > cdt.setTime(cdt.getTime()-PrxLC.getTime()); > if(!PrxLd && cdt.getSeconds()<2){ > if(atr){ return(PrxRealOpen(url,nam,PrxWOA(atr))); } > else{ return(PrxRealOpen(url,nam)); } > } > } > return(new PrxNW()); > }
946 :
945 :04/02/20 07:19 ID:gLKg5G5L
でもnewをなくしたら呼び出し元のウインドウになって それもちょっと都合が悪いんだよね。 ウインドウオブジェクトと同じメソッド、プロパティを持つ ダミーのオブジェクトを返そうと思っているんだけど、 その前に、元のコードの意味というか意図を知りたいんで。
そろそろ次スレかぁ、長いようで長かったな
>>945 return(new PrxNW());の行はなんなんだろうね。
PrxNWというオブジェクトを初期化してPrxNWオブジェクトそのものを返してるだけ。
new演算子を取り去れば、確かにwindowオブジェクトを返すから意味が出てくる。
new演算子をくっつけてしまった現在は全く意味をなしてないと思われ。
<script>
myWin = window.open("");
myWin.document.open();
myWin.document.write("advertisement...")
myWin.document.close();
</script>
こんな広告POPUPの場合、
本来なら新しいウィンドウが開いて広告のためのHTMLが新窓に後書きされるけど
(件の行からnew演算子を取り去った)kill pop-up windowsを適用しておくと
その場にdocument.write()される。
広告だったらむしろ不必要だけど、これを最初に作った人の頭には
「新窓を開くタイプのフローティングメニュー」があったのかも知れない。
なるほど、それならその場に書かれないとメニューが無くなるから困る。
それから現在は上のようなスクリプトでエラーが起こるから、
それを出来る限り回避したかったのかな。
>ウインドウオブジェクトと同じメソッド、プロパティを持つ
>ダミーのオブジェクトを返そうと思っているんだけど
と同じ動機(?)で。
(AB++|CD++)++ これも順番が変な気がする。
951 :
945 :04/02/20 23:19 ID:gLKg5G5L
>>948 やっぱよくわかんないよね。ということで修正した。
これでいままでエラーになっていたページがエラーにならなくなった。
そこwin=window.open(〜); win.blur(); と良くある後ろに
ポップアップ(ダウン?)する命令でエラーになっていたんだよね。
いる人がいるかもしれないので修正個所を書いておく。
まず、WindowOpen.jsのPrxOpenのreturn(new PrxNW());を
return(PrxNW2());に変更。
あとは、次の関数を追加。
function PrxNW2(){
return(PrxCreateDummyWindow());
}
function PrxDummyFunction() {}
function PrxCreateDummyWindow() {
var o = new Object();
PrxSetDefaultProperty(o);
o.blur=o.alert=o.open=o.focus=o.resizeBy=o.resizeTo=o.moveBy=o.moveTo=PrxDummyFunction;
return o;
}
952 :
945 :04/02/20 23:19 ID:gLKg5G5L
function PrxSetDefaultProperty(o) { for (var prop in this.window) { switch(typeof(this.window[prop])) { case "function": o[prop] = PrxDummyFunction; break; case "number": o[prop] = 0; break; case "object": o[prop] = null; break; case "string": o[prop] = ""; break; case "boolean": o[prop] = false; break; default: } } }
953 :
945 :04/02/20 23:23 ID:gLKg5G5L
PrxSetDefaultProperty()でウインドウオブジェクトと同じ プロパティを作成しているんだけど、一部というかほとんどのメソッドが 自動で取得できないので、PrxCreateDummyWindow()の o.blur=o.alert=o.open=o.focus=o.resizeBy=o.resizeTo=o.moveBy=o.moveTo=PrxDummyFunction; でダミーのメソッドを作っている。まあPrxSetDefaultProperty()はいらないかもね。 必要そうなのしか書いてないから、他に必要なのがあったら付け加えて。
-------------------- 43 名前:ひよこ名無しさん[sage] 投稿日:04/02/17 16:27 ID:??? [Patterns] Name = "kill window.open" Active = TRUE Limit = 256 Match = "window.open\(" Replace = "window.unopen(" コレで十分な気がする。 --------------------- というレスが入門スレにありますがこれじゃ防げないポップアップもあるんでしょうか。
955 :
945 :04/02/21 00:09 ID:gmsdl0jW
>>954 w = window;w.open() や with(window){open()}なんてのに対応できない。
なんてマイナーケースもあるが、それ以上に
余計なポップアップまで消えてしまうのが嫌。
ユーザーのクリックでwindow.open()するのも結構あるんで。
デフォルトの奴は、ページ開いている最中に次から次に
勝手に開くのだけを防いでいる。
ちなみにユーザーのクリックを含めてwindow.open()をすべて
無効にしたい場合は、window.unopen()なんかに変更するのではなく。
window.open = function (){} をページの最初に挿入した方がいい。
2行目のマイナーケースにも対応できるし、window.unopen()でエラーになることもない。
956 :
945 :04/02/21 00:10 ID:gmsdl0jW
×余計なポップアップまで消えてしまうのが嫌。 ○必要なポップアップまで消えてしまうのが嫌。
957 :
名無し~3.EXE :04/02/21 11:26 ID:e2VaL5Y7
なんかこのスレのレベル下がったなぁ。 入門スレ行けよ。
下がった原因=957
959 :
954 :04/02/21 12:08 ID:f9hAu8Ns
>>955 そんなコードもあるんですか、ありがとうございました!
>window.open = function (){}
なるほど〜Ф(・_・;)
あと、>951のコードも頂きました、激感謝〜m(_ _)m
960 :
ata :04/02/21 16:24 ID:xVC9dyRp
The Proxomitronでブラウザを変更する方法を知っている方いますでしょうか? 前その記事を載せていたサイトが消滅してやり方がわからなくなってしまいました。。。 どうかよろしくお願いします! 実際はブラウザAなのにブラウザBに見せかけるということです。
UserAgent?
966 :
948 :04/02/22 01:37 ID:pCDazsif
>>951-951 おぉ。本当にダミーオブジェクトだ。
948であげたスクリプトがやっぱりエラーなのが悔しいな。
改造してdocumentもダミーオブジェクトにしてみた。
window.open=function(){return PrxCreateDummyWindow(window)} //簡略化
function PrxCreateDummyWindow(obj) {
if(!obj) obj = window;
var o = new Object();
PrxSetDefaultProperty(o, obj);
o.blur=o.alert=o.open=o.focus=o.resizeBy=o.resizeTo=o.moveBy=o.moveTo //window
=o.write=o.writeln=o.close //document
=PrxDummyFunction;
return o;
}
function PrxDummyFunction() {}
function PrxSetDefaultProperty(o, obj) {
if(!obj) obj = window;
for (var prop in obj) {
switch(typeof(obj[prop])) {
case "function": o[prop] = PrxDummyFunction; break;
case "number": o[prop] = 0; break;
case "object": o[prop] =
(prop == "document")? PrxCreateDummyWindow(obj[prop]): null; break;
case "string": o[prop] = ""; break;
case "boolean": o[prop] = false; break;
default: break;
} } }
967 :
948 :04/02/22 01:37 ID:pCDazsif
最初は↓みたいにやろうとしたけど、 case "object": o[prop] = PrxCreateDummyWindow(obj[prop]); break; 無限ループしそう。そうでなくとも処理量が膨大だし。 それにしても、IEだとfor...inステートメントでメソッドを取得できないのは何でだ。 window["open"]("") こういう記述は可能なのにな。
(A++)+A (A+)++A (A++)++A (A+)+A
969 :
945 :04/02/22 05:24 ID:X9sgvoph
>>967 > それにしても、IEだとfor...inステートメントでメソッドを取得できないのは何でだ。
DontEnum属性というものがあるらしい。
ちなみにたぶんIE専用なものじゃない。
実際MozillaやOperaでも取得できない物があるらしい。
970 :
948 :04/02/23 01:31 ID:DzRIzoh3
>>969 なるほど。DontEnumは初耳だった。
Mathオブジェクトなんかは全部DontEnumみたいね。
Operaだとfor...in windowではメソッドのみの取得になっちゃうなぁ。
DOMにおけるDontEnum属性はブラウザ依存と。
971 :
名無し~3.EXE :04/02/23 01:36 ID:bM1mzLMb
また馴れ合いか あげるか
>>971 2ch専用ブラウザが浸透してるこのご時世に
スレ番号なんて誰も気にしてないよ。
973 :
名無し~3.EXE :04/02/23 10:21 ID:tfO3xQ2D
出た
>>972 のヲタクでデブである自分を標準であると
考える「2ch専用ブラウザが浸透してる」発言!!!!
きゃはははははは さすがデブヲタ。
必死だなw
975 :
名無し~3.EXE :
04/02/23 10:40 ID:e/aJ3aRQ イッツナレア〜イアゲイン? アイレイズアディススレッド