کدهای جاوا اسکریپت در داخل متغیر جاوا اسکریپت

سلام، یک مشکل!
خیلی ساده میگم شاید دوستان کسی تونست کمکم کنه:
فرض کنید index.htm صفحه ی ماست که کدهای ایجکس توشته و قراره تمامی صفحات دیگر سایت بصورت ایجکس توی این صفحه لود بشه.
مشکل از اینجا شروع میشه که:
وقتی صفحه ی فرضا page1.php توی ایندکس لود میشه (همه چیز تا اینجا خوبه) کدهای جاوا اسکریپت اون صفحه یعنی page1.php توی Index.htm اجرا نمیشه. اونهم یک دلیل ساده داره چون صفحه هات اضافی که توسط ایجکس میاد توی یک متغیر جاوااسکریپت قرار میگیرده و این متغیر کدهای خودشو (جاوا اسکریپت رو) بلوکه میکنه.
حالا چیکار باید کرد تا این مشکل حل بشه؟
به فکر خودم ناچاراً استفاده از کوکی رسید ولی میدونم تابعی در این زمینه کمک میکنه.

چون خیلی خیلی گیر این مسئله هستم.
لطف کنید اگه می دونید کمک کنید.:wink:
منتظرم:razz:

ویرایش شد: جواب مشکلم را با کمک دوست عزیز nasser_ray پیدا کردم.
مشاهده ی صفحه ای که جواب را در اون قرار داده ام.
 
آخرین ویرایش:
البته یک راه حل سخت براش پیدا کردم. و فعلا مشکلمو حل کرده اما هنوز منتظر این تابع هستم. تابعی که کدهای جاوا اسکرپیت رو داخل خودش منتقل کنه. مشابه تابعی که تو php وجود دارد.
 

imanmir

Member
مشکل من در فراخوانی ادیتور

سلام مشکل من مثل شما من وقتی می خوام یک ایدتور در صفحه بذارم چن ایدتورم جاوااست و ای جکسم جاوا ترکیب شده با xml به همین دلیل نمایش نمی ده ادیتور را اگه مشکلت حل شده به منم بگو
 
بگذار شاید تونستم جوابشو پیدا کنم. درکه دیگه. باید غرور رو زیر پا گذاشت! اگه فهمیدم حتما میگم.
 
درسته جوابش تابع eval است اما بازهم من نتونستم در عمل باهاش کار کنم. چون وقتی این تابع رو بکار می برم کلا سیستم ایجکس از کار میفته. (یعنی هیچ اتفاقی نمی افته و هیچ response ای دریافت نمیشه.)
 

eAmin

Well-Known Member
سلام.

خب کدها رو بزار تا راحت تر بشه راهنمایی کرد.
 
کدها

کدها رو که به دلایلی نمی تونم بگذارم اما کد ایجکس کار که به این زمینه مربوط میشه چیزی شبیه فایلی است که پیوست شده.
ممنون میشم اگه راهنمایی کنید.
البته مورد دیگری که فهمیدم این بود که تابع eval صرفاً فقط کد جاوا اسکریپت رو می فهمه و اگر کل مطالب یک صفحه رو بعنوان RESPONSE بهش بدهی بیلمیره!:razz:
 

پیوست ها

  • ajax.txt
    943 بایت · بازدیدها: 17

eAmin

Well-Known Member
کدها رو که به دلایلی نمی تونم بگذارم اما کد ایجکس کار که به این زمینه مربوط میشه چیزی شبیه فایلی است که پیوست شده.
ممنون میشم اگه راهنمایی کنید.
البته مورد دیگری که فهمیدم این بود که تابع eval صرفاً فقط کد جاوا اسکریپت رو می فهمه و اگر کل مطالب یک صفحه رو بعنوان RESPONSE بهش بدهی بیلمیره!:razz:

سلام.
اینکه فقط ای جکسه. منظورم این بود که از تابع eval چه جوری استفاده کردی؟
ولی در هر حال بی خیال خودم یه امتحانی می کنم.
 
آخرین ویرایش:
دوست بزرگوار من اینقدر زود رنج نباشید. من کد php رو نمی تونم بدهم ولی طریقه ی استفاده (یعنی اونطوری که من سعی می کردم از تابع eval استفاده کنم) به قرار زیره که مطمئنا اشتباهه محضه:
eval(ajaxrequest.responseText);
والا من الان بدون چاره نیستم.
تونستم همه کدهای جاوا اسکریپتی رو که می خواهم توی صفحه ی اول اینکلود کنم. اما مشکل اینجاست که:
بعلت بزرگی فایل ها سایت سنگین شده (در حد کیلوبایتی البته که توی طراحی حرفه ای باید مد نظر باشه)
دوم سرعت و روانی کار را ازم گرفته.
یک چیزهایی توی یکی از سایت های انگلیسی خوندم که میگفت باید هدر صفحاتم رو javascript/text بکنم اما نمی دونم چطوری.
بازهم جالبه اگه بتونم ( می دونم دوستانی هستند که راه حل رو دارند) راه اینکارو بفهمم.
تشکر و شرمنده اگر سو تفاهمی شد.
 

eAmin

Well-Known Member
یک چیزهایی توی یکی از سایت های انگلیسی خوندم که میگفت باید هدر صفحاتم رو javascript/text بکنم اما نمی دونم چطوری.

سلام.

فعلا این پیشت باشه دارم هنوز امتحان می کنم!

این کد php هست:
PHP:
header('Content-Type: text/javascript');

در html هم که باید از تگ متا استفاده کنید.
 

esf-kh

Member
منم به يك نحو ديگه اين مشكل رو دارم . حقيقتش زياد از ajax سر در نمي‌ارم . به عبارتي من يك كد آجاكس دارم . كه .قتي روي لينك كليك مي‌كني محتواي يك صفحه رو به داخل يك div با id مشخص منتقل مي‌كنه . اين لينك مي‌تونه مثل زير باشه .

<a href="javascript:void(0)" onclick="open_url('test.htm','test');"> click here</a>

تگ div هم به اين صورت است .

</div><div id="test">

اسكريپت مربوط به تگ هاي بالا به خوبي كار مي‌كنه .

يك اسكريپت ديگه دارم كه با كليك بر روي يك لينك يك dhtml window باز ميشه . لينكش به صورت زير هستش :

<a href="target.htm" rel="gb_page_center[660, 440]"> click here </a>

اين اسكريپت مربوط به اين لينك هم به تنهايي خوب كار مي‌كنه . حالا من مي خام لينك dhtml window رو داخل صفحه test.htm كه قراره در تگ div اسكريپت اول لود ميشه قرار بدم . حالا هر وقت كه صفحه رو باز مي‌كنم و روي لينك اسكريپت اول كليك مي‌كنم لينك اسكريپت دوم ظاهر مي‌شه اما ديگه اون dhtml window ديگه كار نمي‌كنه و مستقيما خود صفحه target.htm باز ميشه . وقتي يك refresh انجام مي‌دم اونوقت dhtml window به خوبي اجر مي‌شه . اينجوري كه من فهميدم با كليك بر روي لينك اسكريپت اول محتوايات صفحه test كه حاوي لينك اسكريپت دوم است از طريق شناسه id ( test) به داخا تگ div جريان پيدا مي‌كنه و همين شناسه پيدا كردن اون تگ div همه كارها رو خراب مي‌كنه و وقتي refresh مي‌كنم اون شناسه از بين مي‌ره و مثل يك تگ div عادي ميشه . حالا سوالم اينجاست كه چي جوري مي‌تونم اين مشكل رو رفع كنم طوري كه بعد از كليك بر روي ليك اول و لود شده صفحه test.htm كه حاوي لينك لود شدن dhtml window هست اسكريپت دوم هم بدون مشكل كار كنه . بنظرم شناسه پيدا كردن تگ div محتوات داخل تگ رو از عناصر جاوا اسكريپت و css صفحه جدا مي‌كنه و اين باعث ميشه كل قضيه با مشكل مواجه بهش . من حتي كدهاي جاوااسكريپت و css لازم براي لود شدن كد dhtml window را داخل صفحه test.htm هم قرار دادم ولي باز هم موثر نبود
 
آخرین ویرایش:

nasser_ray

Member
سلام
داشتم پست اولت رو می خوندم
این مشگل اصلاٌ ربطی به بلاک کردن و متغییر و این چیزا نداره.
مشگل از innerHtml هستش. اگه می خوای متمعن شی به جایش از write استفاده کن.
واسه حل این مشگل کافیه اینو تو گوگل جستجو کنی
اگه کمی حوصله داشته باشی به جواب می رسی. (run javascript code in innerHTML)

http://www.google.com/search?hl=en&q=run+javascript+code+in+innerHTML
 
سلام
داشتم پست اولت رو می خوندم
این مشگل اصلاٌ ربطی به بلاک کردن و متغییر و این چیزا نداره.
مشگل از innerHtml هستش. اگه می خوای متمعن شی به جایش از write استفاده کن.
واسه حل این مشگل کافیه اینو تو گوگل جستجو کنی
اگه کمی حوصله داشته باشی به جواب می رسی. (run javascript code in innerHTML)

http://www.google.com/search?hl=en&q...e+in+innerHTML

ممنون دوست عزیز ولی چیز دندون گیری گیرم نیامد.
اما توی این مدت تونستم یکم راه های متفاوت رو امتحان کنم. مثلا تونستم با استفاده از کدهای جاوا اسکریپت قبل از اجرای هر درخواست ایجکس یک کد جاوا اسکریپت رو به صفحه ی اصلی اینکلود کنم. مثل لینک زیر:

اما اینهم مشکلات خودشو دارم. مثلا فرض کنید می خواهیم وسط یک فایل php مثلا فایل بررسی ورود به سیستم بررسی بشه و یک دستور انتقال مرورگر توسط جاوا اسکریپت داده بشه. خود همه چیز تا اینجا خوبه اما این کد وسط Php رو چون داخل ایجکس لود میشه کد جاوا اسکریپت رو اجرا نمیکنه.
 

nasser_ray

Member
دوست من
این مشگل اصلاً حل نشدنی هستش دلیلش رو هم قبلاً گفتم.
پس دنبال چیزی نباش که مشگلت رو کاملاً حل کنه.
ولی هیچ چیزی بی جواب نیست.
این کدی که پایین می نویسم تقریباً تمام مشگلات رو حل می کنه بجز یه مشگل و اونم دستور document.write/writeln هستش.

function setAndExecute(divId, innerHTML){
var div = self.parent.document.getElementById(divId);
div.innerHTML = innerHTML;
var x = div.getElementsByTagName("script");
for(var i=0;i<x.length;i++) {
eval(x.text);
}
}

طریقه استفادش هم:

setAndExecute(id,xmlHttp.responseText);

امیدوارم موفق باشی
 
دوست بزرگوار من خیلی خیلی ممنون اما نفهمیدم طریقه ی استفاده رو:
تابع اول رو که باید اینکلود کنم، اما طریقه ی استفاده رو نفهمیدم. یکم بیشتر توضیح میدهید. (آرگومان هاش رو و چطوری باید ازش استفاده کرد. )
خیلی خیلی ممنون میشم.
 

nasser_ray

Member
سلام
خیلی ساده است
با استفاده از جاوا اسکریپت تابعی در فایل که شی xmlhttp رو ساختیم (همونی که آژاکس توشه) به اسم setAndExecute نوشتیم.
که دو تا آرگومان داره :
اولی یا همون id جایی که قراره خروجی در اون به نمایش دربیاد(همونجایی که آژاکس ازش استفاده می کنه)
دومی همون خروجی که آژاکس بهتون می ده و شما ازش inner می گیرید.

نمونه:
document.getElementById(id).innerHTML=AJAXOBG.responseText
setAndExecute(id,AJAXOBG.responseText);
 

جدیدترین ارسال ها

بالا