Непонятная проблема?

 
0
 
JavaScript
ava
Наставник | 19.11.2004, 14:51
Уважаемые коллеги,

подскажите в чем ошибка?

есть код страницы



<html>
<head>
<title>Вствка внутренней ссылки</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script language="JavaScript">
function AddLink()
{

AnCode = '<a href='+document.all.menu_.value+document.all.Target.value+'>'
+window.opener.frames.message.document.selection.createRange().text+'</a>';
var range = window.opener.frames.message.document.selection.createRange();
range.pasteHTML(AnCode);
range.select();
range.execCommand();
alert(document.all.menu_.value);
// window.close();
}
</script>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width=100%>
<tr><td height=20></td></tr>
<tr><td>Пункт меню:</td><td>
<?php
include 'func.php';
seeAdminMenu(3);
?>
</td></tr>
<tr><td>Открытие:</td><td>
<select name=Target><option value=' target=_blank'>В новом окне<option value=' target=_self' selected>
В этом же окне</select></td></tr>
<tr><td align=center><input type=button value=Вставить OnClick="AddLink()"></td></tr>
</table>
</html>


1. функция seeAdminMenu генерирует выпадающий список, следующего вида

<select name=menu_>
<option value="index.php?main=5">НОВОСТИ</option><option value="index.php?main=5&sub=1">....архив</option><option value="index.php?main=5&sub=2">....новые</option><option value="index.php?main=6">ПРОДУКТЫ</option><option value="index.php?main=6&sub=3">....Медстатистика</option><option value="index.php?main=6&sub=10">....Сейфы</option><option value="index.php?main=6&sub=12">....Кредиты</option><option value="index.php?main=7">УСЛУГИ</option>
<option value="index.php?main=8">СТАТЬИ</option>
<option value="index.php?main=9">О ФИРМЕ</option></select>

так вот --- происходит очень странное при нажатие на кнопку, а именно --- выделенный текст, который обрабатывает функция AddLink "оборачивается" в ссылку следующего вида:

<A href="http://sercer/php/new/index.php?main=6&;sub=9" target=_self>ссылка</A>

вопрос в том откуда в ссылке появляется часть http://sercer/php/new/,
когда должна быть только часть index.php?main=6&sub=9
// в конце функции - alert(document.all.menu_.value); выводит index.php?main=6&sub=9
Kommentare (8)
ava
guest | 19.11.2004, 15:41 #
ну раз алерт выдает нужный тебе результат
то соответственно ответ нужно искать у пхпшников smile
ava
Наставник | 19.11.2004, 15:58 #
Нет... PHP точно работает... пользователь получает страницу уже в таком виде...



<html>
<head>
<title>Вствка внутренней ссылки</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script language="JavaScript">
function AddLink()
{

AnCode = '<a href='+document.all.menu_.value+document.all.Target.value+'>'
+window.opener.frames.message.document.selection.createRange().text+'</a>';
var range = window.opener.frames.message.document.selection.createRange();
range.pasteHTML(AnCode);
range.select();
range.execCommand();
alert(document.all.menu_.value);
// window.close();
}
</script>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width=100%>
<tr><td height=20></td></tr>
<tr><td>Пункт меню:</td><td>



<select name=menu_>
<option value="index.php?main=5">НОВОСТИ</option><option value="index.php?main=5&sub=1">....архив</option><option value="index.php?main=5&sub=2">....новые</option><option value="index.php?main=6">ПРОДУКТЫ</option><option value="index.php?main=6&sub=3">....Медстатистика</option><option value="index.php?main=6&sub=10">....Сейфы</ option><option value="index.php?main=6&sub=12">....Кредиты</option><option value="index.php?main=7">УСЛУГИ</ option>
<option value="index.php?main=8">СТАТЬИ</option>
<option value="index.php?main=9">О ФИРМЕ</option></select>



</td></tr>
<tr><td>Открытие:</td><td>
<select name=Target><option value=' target=_blank'>В новом окне<option value=' target=_self' selected>
В этом же окне</select></td></tr>
<tr><td align=center><input type=button value=Вставить OnClick="AddLink()"></td></tr>
</table>
</html>


так что php тут не при чем....

что делать господа? просто гарю... :stena
ava
Sardar | 19.11.2004, 16:49 #
Ты присваиваешь ссылке релативный путь, php скрипт лежит в http://sercer/php/new/, вот от него релативный путь строится дальше. Лечится указнием абсолютного пути. Вверх по пути ты можешь двигатся юзая "..", т.е. : ../index.php?main=6&sub=9 двинет тебя в http://sercer/php/
ava
Наставник | 19.11.2004, 17:12 #
Да, замечательно, но ведь я не могу в данный момент указывать абсолютный путь, т.к. не знаю домен :--(((, что делать, разве нельзя как- нибудь передать нужную мне часть

спасибо конечно за информацию, а при чем здесь вообще это

Вверх по пути ты можешь двигатся юзая "..", т.е. : ../ index.php?main=6&sub=9 двинет тебя в http://sercer/php/

это я и так знал..

// да блин предется скорее всего с помощью php разбираться, используя замену с помощью регулярных выражений :--((
ava
Sardar | 20.11.2004, 15:01 #
Тогда я не совсем понял проблему, думал что тебе надо составить ссылку на скрипт лежащий где то выше по пути, поэтому ты не хочешь использовать релативный адрес.

Зачем тебе реги не ясно, но понятно одно - это решение через пятую точку ;-)
Когда ты устанавливаешь ссылке путь: index.php?main=6&sub=9, браузер принимает это как релативный путь то скрипта, релативный значит от текущего пути в URL. Если ты лежишь в другом домене, то релативный путь берётся от него, это специально так много лет назад было придумано, никакой проблемы здесь нет :exclamation
ava
Наставник | 21.11.2004, 15:43 #
Так-с, объясню проблему немного подробнее,

Есть две страницы:
1 - я страница - в ней есть textarea, в котором пользователь набирает произвольный текст, также на этой странице есть ссылка на страницу номер 2.
2- я страница - представляет код, который я выше привел.

Так вот хотелось бы сделать так, чтобы пользователь мог бы выделить часть текста на странице №1, вызвать страницу №2, задать нужную ссылку и передать url ссылки в страницу №1.


вот эта функция (на второй страницы, выше полный тескт есть страницы), должна бы это делать.



function AddLink()
{

/* в странице номер два AnCode равно <a href=index.php?main=6&sub=9 target=_self>выделенный текст на странице №1</a>
- это то, что мне надо. */

AnCode = '<a href='+document.all.menu_.value+document.all.Target.value+'>'
+window.opener.frames.message.document.selection.createRange().text+'</a>';
var range = window.opener.frames.message.document.selection.createRange();
range.pasteHTML(AnCode);
range.select();
range.execCommand();  
alert(document.all.menu_.value);
}

/* но на странице №2 я получаю полный путь --- который мне не нужен :--((, а именно <A href="http://sercer/php/new/index.php?main=6&;sub=9" target=_self>выделенный текст на странице №1</A>
так вот вопрос почему так происходит :--(( */

ava
Sardar | 21.11.2004, 17:12 #
Ну не знаю как ещё обьяснить...

Браузер при отсутствии .http:// принимает адрес за релативный. Любой адрес будет переведён в абсолютный(полный URL), что бы точно перейти на запрашиваемую страницу. Ну откуда же браузер знает что по ссылке ты ходить не будешь и тебе адрес нужен для красоты index.php?main=6&sub=9 ;-)

Просто задай полный URL и будет тебе счастье - если скрипт лежит в левом домене. Либо пораскинь мозгами и подумай как составить релативный адрес точно указывающий на скрипт.
ava
Наставник | 22.11.2004, 05:00 #
Цитата
Либо пораскинь мозгами и подумай как составить релативный адрес точно указывающий на скрипт.


что и собираюсь сделать....
Спасибо за ответы.
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden