ورود

View Full Version : مشکل در اجرای دستورات jquery وقتی که به صفحه مقصد اضافه می گردد



alismith
جمعه 23 اردیبهشت 1390, 18:21 عصر
سلام دوستان
من تو یه صفحه مثلا index یه فایل js قرار دادم که کار این فایل اینکه دو تا تگ script بسازه و به صفحه اضافه کنه
که یکی از اون اسکریپت ها اشاره به فایل jquery داره و اسکریپت دوم فایل دستوراتی هست که من با jquery نوشتم
تا اینجا همه چی درست انجام میشه و فایل ها اضافه میشند، اما مشکل اینجاست که اون فایل دومی که قراره با این صفحه کار کنه اجرا نمیشه مثلا عناصر صفحه رو کنترل کنه یا اگه صفحه لود شد یه پیامی چاپ کنه.
حالا ممنون میشم اگه دوستان این مشکل رو حل کنند


با تشکر

hossin.esm
شنبه 24 اردیبهشت 1390, 11:51 صبح
سلام
از تابع getScript (http://api.jquery.com/jQuery.getScript) استفاده کنید.
http://api.jquery.com/jQuery.getScript

alismith
شنبه 24 اردیبهشت 1390, 15:39 عصر
سلام دوست عزیز مثل اینکه شما متوجه منظور من نشدید
ببینید اون فایل جاوااسکریپتی که من تو صفحه قرار دادم کارش اینکه دو تا اسکریپت به head اضافه کنه (پس هنوز من jQuery رو به صفحه اضافه نکردم و نمی تونم از تابعی که گفتید استفاده کنم) که یکی همون کتابخانه jQuery هستش و فایل دوم دستوراتی هست که من نوشتم مثلا وقتی صفحه لود شد یه پیام چاپ کنه اما این فایل دوم با اینکه اضافه میشه اما دستوراتش اجرا نمیشن و کار نمی کنه
حالا اگه میشه بگید را حل چیه؟

خیلی ممنون

hossin.esm
شنبه 24 اردیبهشت 1390, 16:32 عصر
سلام
اگر کد بود بهتر میشد جواب داد و نمیدونم دقیقا چه کار میخواهید انجام دهید
ولی فایل jquery را با کد زی اضافه کنید.

oScript = document.createElement('script');

oScript.type = 'text/javascript';
oScript.src = 'jquery.js';
document.getElementsByTagName('head')[0].appendChild(oScript);



برای اضافه کردن کد ها هم میتونید انها رو در یک فایل قرار دهید و مثل بالا عمل کنید
و یا از لینک زیر کمک بگیرید
http://www.htmlcodetutorial.com/help/ftopic761.html

alismith
شنبه 24 اردیبهشت 1390, 18:55 عصر
درسته من هم از همین روش استفاده کردم و اون دو تا فایل رو append کردم اما الان فایل دوم که همینطور که گفتم مثلا دارای دستوراتی هستش که خودم نوشتم مثلا:


$(document).ready(function(){

alert('Document is Laod');

});


اجرا نمیشند

ممنون میشم یه بررسی بکنید

alismith
شنبه 24 اردیبهشت 1390, 19:06 عصر
function appendChild(node, text) {
if (null == node.canHaveChildren || node.canHaveChildren) {
node.appendChild(document.createTextNode(text));
} else {
node.text = text;
}
}

var head = document.getElementsByTagName('head')[0];

var jquery = document.createElement('script');
jquery.setAttribute('src','http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js');
head.appendChild(jquery);

var source = document.createElement('script');
source.setAttribute('language','javascript');
source.setAttribute('src','top.js');
head.appendChild(source);

hossin.esm
شنبه 24 اردیبهشت 1390, 20:30 عصر
مشکل اینجا است که هنوز jquery لود نشده باید کد اجرا شود
کد را به صورت زیر بنویسید مشکل حل میشه البته تست هم بکنید

<!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">
<head>

</head>
<body>

<script>

var head = document.getElementsByTagName('head')[0];

var jquery = document.createElement('script');
jquery.setAttribute('src','http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js');
jquery.setAttribute('id','jq');
jquery.onload = jquery.onreadystatechange = function(){
jquery.onreadystatechange = jquery.onload = null;
if(/MSIE ([6-9]+\.\d+);/.test(navigator.userAgent))window.setTimeout(funct ion(){handler();},8,this);
else handler();


};

head.appendChild(jquery);

function handler()
{
var source = document.createElement('script');
source.setAttribute('language','javascript');
source.setAttribute('src','top.js');
head.appendChild(source);
}

</script>

</body>
</html>

محتوای فایل top.js


alert('Document is Laod');

alismith
شنبه 24 اردیبهشت 1390, 23:15 عصر
سلام
خیلی ممنون مشکل حل شد فقط اگه امکان داره یه توضیحی درباره نحوه تشخیص این تابع در لود شدن کامل فایل jQuery بدید :


jquery.onload = jquery.onreadystatechange = function(){
jquery.onreadystatechange = jquery.onload = null;
if(/MSIE ([6-9]+\.\d+);/.test(navigator.userAgent))window.setTimeout(funct ion(){handler();},8,this);
else handler();


};


باتشکر