Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nie mogę dołączyć kodu javascript z pliku
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
starach
Umieszczam poniższy kod w sekcji HEAD, a skrypt z pliku nie jest wczytywany mimo tego iż ścieżka do pliku jest poprawna.
  1. <script src="http://localhost/js/chat.js" type="text/javascript"></script>
Może ja ślepy jestem i zrobiłem jakiś idiotyczny błąd, ale to jest po prostu bardzo dziwne blink.gif

edit>
Gwoli ścisłości, kiedy wkleję zawartość parametru src do paska adresu to skrypt się wyświetla.
devnul
a content-type pliku się zgadza z tym wysyłanym przez serwer? możliwe też że masz poprostu błędy w kodzie js i dlatego przeglądarka przerywa ładowanie skryptu
mike
Cytat(orglee @ 3.01.2008, 17:02:11 ) *
Umieszczam poniższy kod w sekcji HEAD, a skrypt z pliku nie jest wczytywany (...)
Skąd wiesz?
Pokaż jak to sprawdzasz. Obstawiam, że źle :-)
starach
Skrypt działa na pewno. Jest to kod obsługujący czat i był osadzony normalnie w pliku który otrzymywała przeglądarka zanim przystąpiłem do oddzielania przy czym wtedy działał bez zarzutu. Wiem że nie działa bo kiedy wchodzę w Konsolę błędów w FF wyświetla się informacja że funkcja show_hide nie jest zdefiniowana a jest ona w pliku JS.
Kod
Błąd: show_hide is not defined
Plik źródłowy: javascript: show_hide('chat_container')
Służy ona do wyświetlania kontenera czatu poprzez zmianę właściwości display CSS'a.

devnul: Jak sprawdzić jaki typ pliku wysyła serwer ?
mike
Cytat(orglee @ 3.01.2008, 18:13:58 ) *
Wiem że nie działa bo kiedy wchodzę w Konsolę błędów w FF wyświetla się informacja że funkcja show_hide nie jest zdefiniowana a jest ona w pliku JS.
Kod
Błąd: show_hide is not defined
Plik źródłowy: javascript: show_hide('chat_container')
Rzuć jakimś linkiem, bądź wklej całą sekcje head oraz wywołanie i definicję funkcji show_hide

Cytat(orglee @ 3.01.2008, 18:13:58 ) *
devnul: Jak sprawdzić jaki typ pliku wysyła serwer ?
FireBug prawdę Ci powie: All -> Net
starach
Cytat(mike)
Rzuć jakimś linkiem, bądź wklej całą sekcje head oraz wywołanie i definicję funkcji show_hide

Nie chciałem was straszyć kodem, bo właśnie przerabiam styl do PhpBB3 ... Tak wiem masochizm
Sekcja HEAD:
CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="{S_CONTENT_DIRECTION}" lang="{S_USER_LANG}" xml:lang="{S_USER_LANG}">
<head>

<meta http-equiv="content-type" content="text/html; charset={S_CONTENT_ENCODING}" />
<meta http-equiv="content-language" content="{S_USER_LANG}" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="resource-type" content="document" />
<meta name="distribution" content="global" />
<meta name="copyright" content="2002-2006 phpBB Group" />
<meta name="keywords" content="" />
<meta name="description" content="" />
{META}
<title>{SITENAME} • <!-- IF S_IN_MCP -->{L_MCP} • <!-- ELSEIF S_IN_UCP -->{L_UCP} • <!-- ENDIF -->{PAGE_TITLE}</title>

<link rel="stylesheet" href="{T_STYLESHEET_LINK}" type="text/css" />
<script src="{T_JS_PATH}/chat.js" type="text/javascript"></script> <-- Produkuje dobry link do pliku
<script type="text/javascript">
// <![CDATA[
<!-- IF S_USER_PM_POPUP -->
if ({S_NEW_PM})
{
popup('{UA_POPUP_PM}', 400, 225, '_phpbbprivmsg');
}
<!-- ENDIF -->

function popup(url, width, height, name)
{
if (!name)
{
name = '_popup';
}

window.open(url.replace(/&/g, '&'), name, 'height=' + height + ',resizable=yes,scrollbars=yes,width=' + width);
return false;
}

function jumpto()
{
var page = prompt('{LA_JUMP_PAGE}:', '{ON_PAGE}');
var perpage = '{PER_PAGE}';
var base_url = '{A_BASE_URL}';

if (page !== null && !isNaN(page) && page > 0)
{
document.location.href = base_url.replace(/&/g, '&') + '&start=' + ((page - 1) * perpage);
}
}

/**
* Find a member
*/
function find_username(url)
{
popup(url, 760, 570, '_usersearch');
return false;
}

/**
* Mark/unmark checklist
* id = ID of parent container, name = name prefix, state = state [true/false]
*/
function marklist(id, name, state)
{
var parent = document.getElementById(id);
if (!parent)
{
eval('parent = document.' + id);
}

if (!parent)
{
return;
}

var rb = parent.getElementsByTagName('input');

for (var r = 0; r < rb.length; r++)
{
if (rb[r].name.substr(0, name.length) == name)
{
rb[r].checked = state;
}
}
}

<!-- IF ._file -->

/**
* Play quicktime file by determining it's width/height
* from the displayed rectangle area
*
* Only defined if there is a file block present.
*/
function play_qt_file(obj)
{
var rectangle = obj.GetRectangle();

if (rectangle)
{
rectangle = rectangle.split(',')
var x1 = parseInt(rectangle[0]);
var x2 = parseInt(rectangle[2]);
var y1 = parseInt(rectangle[1]);
var y2 = parseInt(rectangle[3]);

var width = (x1 < 0) ? (x1 * -1) + x2 : x2 - x1;
var height = (y1 < 0) ? (y1 * -1) + y2 : y2 - y1;
}
else
{
var width = 200;
var height = 0;
}

obj.width = width;
obj.height = height + 16;

obj.SetControllerVisible(true);

obj.Play();
}
<!-- ENDIF -->

// ]]>
</script>
</head>
Znacznik <script> który ma informować przeglądarkę
o potrzebie dołączenia zewnętrznego pliku JS jest zaraz pod znacznikiem <title>
Zawartość chat.js:
CODE
var fieldname = 'messages';
var last_time = 0;
var xmlHttp = http_object();
var last_id = {LAST_ID};
var type = 'receive';
var post_time = {TIME};
var read_interval = 5000;
var interval = setInterval('handle_send("read", last_id);', read_interval);

function handle_send(mode, f)
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{
indicator_switch('on');
type = 'receive';
param = 'mode=' + mode;
param += '&last_id=' + last_id;
param += '&last_time=' + last_time;
param += '&last_post=' + post_time;
param += '&read_interval=' + read_interval;

if (mode == 'add' && document.text.message.value != '')
{
type = 'send';
for(var i = 0; i < f.elements.length; i++)
{
elem = f.elements;
param += '&' + elem.name + '=' + encodeURIComponent(elem.value);
}
document.text.message.value = '';
}
else if (mode == 'delete')
{
type = 'delete';
param += '&chat_id=' + f;
}
xmlHttp.open("POST", '{FILENAME}', true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlHttp.onreadystatechange = handle_return;
xmlHttp.send(param);
}
}

function handle_return()
{
if (xmlHttp.readyState == 4)
{
if (type != 'delete')
{
// 0 - wiadomosci na czacie
// 1 - last id
// 2 - uzytkownicy on line
// 3 - last time
// 4 - delay
// 5 - last post
results = xmlHttp.responseText.split('---');
if(results[1])
{
if(last_id == 0)
{
document.getElementById(fieldname).innerHTML = results[0];
}
else
{
document.getElementById(fieldname).innerHTML = results[0] + document.getElementById(fieldname).innerHTML;
}
last_id = results[1];
if(results[2])
{
document.getElementById('whois_online').innerHTML = results[2];
last_time = results[3];
if(results[4] != read_interval * 1000)
{
window.clearInterval(interval);
read_interval = results[4] * 1000;
interval = setInterval('handle_send("read", last_id);', read_interval);
document.getElementById('update_seconds').innerHTML = results[4];
}
post_time = results[5];
}
}
}
indicator_switch('off');
}
}

function delete_post(chatid)
{
document.getElementById('p' + chatid).style.display = 'none';
handle_send('delete', chatid);
}

function indicator_switch(mode)
{
if(document.getElementById("act_indicator"))
{
var img = document.getElementById("act_indicator");
if(img.style.visibility == "hidden" && mode == 'on')
{
img.style.visibility = "visible";
}
else if (mode == 'off')
{
img.style.visibility = "hidden"
}
}
}
function http_object()
{
if (window.XMLHttpRequest)
{
return new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
return new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
document.getElementById('p_status').innerHTML = 'Status: Cound not create XmlHttpRequest Object. Consider upgrading your browser.';
}
}
function show_hide(element)
{
elem = document.getElementById(element).style.display
if(elem !== 'none') {
document.getElementById(element).style.display = 'none'
} else {
document.getElementById(element).style.display = 'block'
}
}
Nie krzyczcie bo jest to modyfikacja ściągnięta z netu ja ją tylko trochę przerobiłem tongue.gif
Na samym dole jest kod funkcji show_hide() która dodałem ja.
Cytat(mike)
FireBug prawdę Ci powie: [i]All -> Net
No zainstalowałem wtyczkę do FF, ale nie widzę All ani Net mam wersję 1.05
edit>
W zasadzie nie lubię używać akronimów typu OMG, ale tym razem zdaje się że bardzo on pasuje do sytuacji ...
Znalazłem problem po prostu w tym cholernym JS są zmienne parsera szablonów ... ale ze mnie ciapa.
No w każdym razie prosiłbym o odpowiedź na All -> Net i + dla ciebie mike za FireBug przydatna rzecz dzięki.
mike

Znajdziesz tam wszystkie szczegóły dotyczące każdego ściągniętego przez przeglądarkę pliku.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.