flvFPW1 () - Что это делает? - PullRequest
       18

flvFPW1 () - Что это делает?

1 голос
/ 18 декабря 2008

Мне было поручено переписать движок Javascript, который сейчас используется для внутреннего веб-сайта моего клиента. При просмотре кода я наткнулся на эту функцию flvFPW1 , которую я не распознаю, и не могу расшифровать код (мои знания Javascript в лучшем случае скромны). Поиск в Google дает мне несколько обращений, но большинство, если не все попадания, относятся к Javascript, используемому на этой конкретной странице. Другими словами, я не могу найти описание этой функции, хотя она, очевидно, используется другими.

Может ли кто-нибудь здесь просветить меня?

Спасибо / Фредрик

Ответы [ 6 ]

4 голосов
/ 18 декабря 2008

Мои собственные исследования подтверждают, что это расширение Dreamweaver: я нашел код для версии 1.44 (прокрутите вниз на этой странице), а не 1.3:

function flvFPW1(){//v1.44
var v1=arguments,v2=v1[2].split(","),v3=(v1.length>3)?v1[3]:false,v4=(v1.length>4)?parseInt(v1[4]):0,
v5=(v1.length>5)?parseInt(v1[5]):0,v6,v7=0,v8,v9,v10,v11,v12,v13,v14,v15,v16;v11=
new Array("width,left,"+v4,"height,top,"+v5);for (i=0;i<v11.length;i++){v12=v11[i].split(",");l_iTarget=parseInt(v12[2]);
if (l_iTarget>1||v1[2].indexOf("%")>-1){v13=eval("screen."+v12[0]);
for (v6=0;v6<v2.length;v6++){v10=v2[v6].split("=");
if (v10[0]==v12[0]){v14=parseInt(v10[1]);if (v10[1].indexOf("%")>-1){v14=(v14/100)*v13;v2[v6]=v12[0]+"="+v14;}}
if (v10[0]==v12[1]){v16=parseInt(v10[1]);v15=v6;}}
if (l_iTarget==2){v7=(v13-v14)/2;v15=v2.length;}
else if (l_iTarget==3){v7=v13-v14-v16;}v2[v15]=v12[1]+"="+v7;}}v8=v2.join(",");v9=window.open(v1[0],v1[1],v8);
if (v3){v9.focus();}document.MM_returnValue=false;return v9;}

Который, конечно, проходил через компрессор для экономии пропускной способности, что затрудняло его чтение. Я потратил немного времени на обфусцировку, прежде чем понял, что могу добиться лучших результатов, добавив «dreamweaver» в строку поиска. После этого мне удалось найти более интересную документацию:

http://www.flevooware.nl/dreamweaver/extdetails.asp?extID=8 (краткое описание) http://satsuki.altervista.org/basibloggers/source40.txt (полный код скрипта на итальянском языке)

Короче говоря: это просто оболочка для window.open. Вот прогресс, который я сделал, переводя код:

function flvFPW1()
{//v1.44
    var v1=arguments;  // pass v1[0] and v1[1] directly to window.open
    var arg3=v1[2].split(",");
    var focusNewWindow=(v1.length>3)?v1[3]:false;
    var newWindowWidth=(v1.length>4)?parseInt(v1[4]):0;
    var newWindowHeight=(v1.length>5)?parseInt(v1[5]):0;

    var adjustedWindowPosition=0,result,keyValuePair,AxisProperty;
    var windowSize,sizeValue,arg3Index,anchorValue;

    var hwArray= new Array("width,left,"+newWindowWidth,"height,top,"+newWindowHeight);
    for (i=0;i<hwArray.length;i++)  // x-axis, then y-axis
    {
        AxisProperty=hwArray[i].split(","); // {"width", "left", 0}  or {"height", "top", 0}
        l_iTarget=parseInt(AxisProperty[2]);  // l_iTarget defined where?

        if (l_iTarget>1||v1[2].indexOf("%")>-1)  
        {
            screenSize=eval("screen."+AxisProperty[0]); // x or y size of the window
            for (var i=0;i<arg3.length;i++)
            {
                keyValuePair=arg3[i].split("=");
                if (keyValuePair[0]==AxisProperty[0]) // if the key is (width|height)
                {
                    sizeValue=parseInt(keyValuePair[1]);
                    if (keyValuePair[1].indexOf("%")>-1)
                    {
                        sizeValue=(sizeValue/100)* screenSize;
                        arg3[i]=AxisProperty[0]+"="+sizeValue;
                    }
                }

                if (keyValuePair[0]==AxisProperty[1])  // if the key is (left|top)
                {
                    anchorValue=parseInt(keyValuePair[1]);
                    arg3Index=i;
                }
            }
            if (l_iTarget==2)
            {
                adjustedWindowPosition=(screenSize-sizeValue)/2; // will center the window on this axix
                arg3Index=arg3.length;
            }
            else if (l_iTarget==3)
            {
                adjustedWindowPosition= screenSize-sizeValue-anchorValue;
            }
            arg3[arg3Index]=AxisProperty[1]+"="+adjustedWindowPosition;  // (left|top) = value
        }
    }
    var newArg3=arg3.join(",");
    result=window.open(v1[0],v1[1],newArg3);
    if (focusNewWindow)
    {
        result.focus();
    }

    document.MM_returnValue=false;
    return result;
}
1 голос
/ 18 декабря 2008

на вашем сайте, введите это в адресной строке:

javascript:alert(flvFPW1);

сообщит код функции

0 голосов
/ 19 декабря 2008

Спасибо за помощь, ребята! spilth: Да, я нашел функцию в js-файле, но не смог понять код. Поскольку я нашел ту же функцию на нескольких других страницах, которые не были связаны со страницей моего клиента, я предположил, что ее назначение уже будет известно другим людям ... поэтому я не стал публиковать код. Я буду в следующий раз, хотя.

С наилучшими пожеланиями

0 голосов
/ 18 декабря 2008

Google дает:

function flvFPW1() { // v1.3
    // Copyright 2002, Marja Ribbers-de Vroed, FlevOOware (www.flevooware.nl/dreamweaver/)
    var v1 = arguments, v2 = v1[2].split(","), v3 = (v1.length > 3) ? v1[3] : false, v4 = (v1.length > 4) ? parseInt(v1[4]) : 0, v5 = (v1.length > 5) ? parseInt(v1[5]) : 0, v6, v7 = 0, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18;
    if (v4 > 1) {
        v10 = screen.width;
        for (v6 = 0; v6 < v2.length; v6++) {
            v18 = v2[v6].split("=");
            if (v18[0] == "width") {
                v8 = parseInt(v18[1]);
            }
            if (v18[0] == "left") {
                v9 = parseInt(v18[1]);
                v11 = v6;
            }
        }
        if (v4 == 2) {
            v7 = (v10 - v8) / 2;
            v11 = v2.length;
        } else if (v4 == 3) {
            v7 = v10 - v8 - v9;
        }
        v2[v11] = "left=" + v7;
    }
    if (v5 > 1) {
        v14 = screen.height;
        for (v6 = 0; v6 < v2.length; v6++) {
            v18 = v2[v6].split("=");
            if (v18[0] == "height") {
                v12 = parseInt(v18[1]);
            }
            if (v18[0] == "top") {
                v13 = parseInt(v18[1]);
                v15 = v6;
            }
        }
        if (v5 == 2) {
            v7 = (v14 - v12) / 2;
            v15 = v2.length;
        } else if (v5 == 3) {
            v7 = v14 - v12 - v13;
        }
        v2[v15] = "top=" + v7;
    }
    v16 = v2.join(",");
    v17 = window.open(v1[0], v1[1], v16);
    if (v3) {
        v17.focus();
    }
    document.MM_returnValue = false;
}

URL в комментарии приводит к:

FlevOOware - Расширения Dreamweaver - Всплывающая ссылка

0 голосов
/ 18 декабря 2008

Установите Firefox (http://www.mozilla.com/en-US/firefox/) и расширение FireBug (https://addons.mozilla.org/en-US/firefox/addon/1843).). Используйте вкладку DOM в FireBug, чтобы найти функцию и щелкнуть по ней в правом столбце. Она приведет вас к файлу / строке, которые функция определена на.

Или откройте страницу HTML в своем любимом мощном текстовом редакторе (например, TextPad или TextMate) и выполните поиск / поиск имени функции.

Если вы говорите, что нашли функцию, но не можете ее понять, то, вероятно, вам следует вставить код в свой вопрос.

0 голосов
/ 18 декабря 2008

Я не думаю, что это встроенная функция, поэтому это просто какая-то функция, написанная вашей командой

Возможно, это функция, которую Dreamweaver добавляет на страницу, чтобы что-то сделать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...