Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получение URL и Title (https://javascript.ru/forum/misc/1074-poluchenie-url-i-title.html)

Phoenix 08.03.2008 13:47

Получение URL и Title
 
Может конечно очень глупый вопрос :) Но вот второй день мучаюсь...

Для получения URL'a страницы, можно воспользоваться параметром window.history.current. НО почему то только в опере он работает нормально...
ФФ пишет ошибку "uncaught exception: Permission denied to get property History.current".
IE тоже с ошибкой скрипта выскакивает...
В чем может быть проблема? или есть альтернативный способ определение? нужен чистый JS.

И по поводу Title.
Я отправляю его знаечение на мыло(в заголовке сообщения). Получаю его через document.title.
Но на мыло не всегда приходит в нормальной кодировки... Т.е. есть разные страницы с разной кодировкой. И иногда приоходят карагозябры. Как сделать универсальное отправление? я отправляю этот title на страницу (PHP) и там уже идет генерация и отправки письма. я думаю надо на этом этапе определить кодировку, и если не подходит. Перевести. Как вы думаете?

FTDeBUGgeR 08.03.2008 18:44

Первый пункт решается, если я вас правильно понял, так: location.href
По второму пункту: лучше перекодировку делать средствами php.

Kolyaj 08.03.2008 19:58

Цитата:

Сообщение от FTDeBUGgeR
Первый пункт решается, если я вас правильно понял, так: location.href

Точнее document.location.href

Можно кодировать на стороне клиента. Следующая функция заэскейпит строку в windows-1251
String.prototype.escape = function() {
    var trans = [];
    for (var i = 0x410; i <= 0x44F; i++)
      trans[i] = i - 0x350;
    trans[0x401] = 0xA8;
    trans[0x451] = 0xB8;
    var ret = [];
    for (var i = 0; i < this.length; i++) {
      var n = this.charCodeAt(i);
      if (typeof trans[n] != 'undefined')
        n = trans[n];
      if (n <= 0xFF)
        ret.push(n);
    }
    return escape(String.fromCharCode.apply(null, ret));
  };

Phoenix 09.03.2008 12:53

C URL что то я прогнал :) спасибо :)

С кодировкой сейчас буду тестить и разбираться :)

Phoenix 10.03.2008 15:13

На стороне клиента не получится. Просто у меня получается мой скрипт встраивается в страницу в интернете(в любую страницу) и при запуске его. Происходит отправка на мой скрипт URL этой страницы и ее Title.

Потом моя страница отправляет этот Title мне на мыло. И вот тут выскакивает проблема с кодировкой. Если страница в windows-1251,то приходит нормально. Если в UTF-8. В заголовке письма приходят карагозябыр.

Как сделать перекодировку на стороне сервера? Т.е. на моей php странице, которая получает от скрипта данные.

Kolyaj 10.03.2008 22:10

Phoenix, вот здесь у меня все скрипты встраиваются в чужие страницы, в частности закладка "Статистика слов" отправляет на сервер слова для морфологического разбора. Вроде все работает.

Phoenix 10.03.2008 23:15

Вот это мне и нужно. я делаю подобную вещь... сейчас кину код, что бы было понятно, что к чему.
<?
$url="http://".$_SERVER['SERVER_NAME']."".$_SERVER['REQUEST_URI'];
$iden="12345";
echo($url);
?>
<a href='javascript:(function(){
var s=document.createElement("script");
s.charset="windows-1251";
s.language="javascript";
s.type="text/javascript";
var d=new Date;
var inf=prompt("Введите описание ссылки", "");
s.src="<?echo($url)?>get.php?surl="+document.location.href+"&stitle="+
                        +document.title+"&siden=<?echo($iden)?>&sinf="+inf;
document.body.appendChild(s)})();' return false>[Добавить URL в базу]</a>


А страница get.php отправляет на мыло заголовок и введеный в алерт текст. Но если страница в кодировке wim-1251, то все идеально. Если в UTF-8, то карагозябры...

как это можно обойти? как я понял, это уже надо на странице get.php делать?

Андрей Параничев 10.03.2008 23:37

Конвертируй в зависимости от кодировки через функцию iconv. Только я не знаю как тут лучше определить в правильной кодировке пришло сообщение или нет...


Часовой пояс GMT +3, время: 03:06.