2008-09-17 17 views
8

यहां एक चुनौती है जिसे मैंने हाल ही में सौंपा था। मुझे अभी भी ऐसा करने का सबसे अच्छा तरीका नहीं पता है, शायद किसी और के पास कोई विचार है।मैं पृष्ठों के माध्यम से कैसे चक्र कर सकता हूं?

PHP और/या HTML का उपयोग करके, एक पृष्ठ बनाएं जो किसी दिए गए अंतराल पर किसी भी अन्य पृष्ठों के माध्यम से चक्र चलाएं।

उदाहरण के लिए, हम इस पृष्ठ को लोड करेंगे और यह हमें 20 सेकंड के लिए Google पर ले जाएगा, फिर 10 सेकंड के लिए याहू पर, फिर 180 सेकंड के लिए स्टैक ओवरफ्लो पर और इतने आगे।

उत्तर

1

सामग्री के लिए एक अलग आईफ्रेम का उपयोग करें, फिर जावास्क्रिप्ट का उपयोग delay() समय पर करें और iframe की location संपत्ति सेट करें।

1

जब आपको किसी अन्य साइट पर ले जाया जाता है (जैसे Google) नियंत्रण उस साइट पर जाता है, इसलिए आपकी स्क्रिप्ट को चलने के लिए, आपको एक फ्रेम में नई साइट लोड करने की आवश्यकता होगी, और अपनी स्क्रिप्ट को रखें (जो मुझे लगता है कि जावास्क्रिप्ट का उपयोग करके सबसे आसानी से लागू किया जा सकता है) एक और फ्रेम में (जिसे बहुत छोटा बनाया जा सकता है ताकि आप इसे देख सकें)।

0

आप इसे आसानी से जावास्क्रिप्ट के साथ कर सकते हैं। यह तैनाती पर्यावरण को जानने में मदद करेगा। क्या यह एक कियोस्क या कुछ है?

जावास्क्रिप्ट समाधान के लिए, एक ऐसे पृष्ठ को प्रस्तुत करें जिसमें एक जावास्क्रिप्ट है जो एक नई ब्राउज़र विंडो खुल जाएगा। नियंत्रक पृष्ठ तब नई ब्राउज़र विंडो को पृष्ठों की एक श्रृंखला के माध्यम से चक्र का कारण बन जाएगा। ऐसा करने का सबसे आसान तरीका यह है कि मैं सोच सकता हूं।

संपादित करें: साइमन की टिप्पणी के साथ सहमत हैं। यह समाधान एक कियोस्क या बड़े, सार्वजनिक प्रदर्शन वातावरण में सबसे अच्छा काम करेगा जहां पृष्ठों को किसी भी उपयोगकर्ता इंटरैक्शन के बिना दिखाया जा रहा है।

0

आपकी सटीक आवश्यकताओं पर निर्भर करता है। यदि आप जावास्क्रिप्ट को अनुमति देते हैं और फ़्रेम को अनुमति देते हैं तो आप अपने पृष्ठ पर एक फ्रेमसेट के भीतर एक छिपी हुई फ्रेम चिपका सकते हैं जिसमें आप कुछ जावास्क्रिप्ट लोड करते हैं। यह जावास्क्रिप्ट तब विंडो.लोकेशन ऑब्जेक्ट और सेटटाइमआउट फ़ंक्शन का उपयोग करके मुख्य फ्रेम की सामग्री को नियंत्रित करेगा।

नकारात्मकता यह होगी कि उपयोगकर्ता का पता बार नए यूआरएल के साथ अपडेट नहीं होगा। मुझे यकीन नहीं है कि यह अन्यथा कैसे प्राप्त होगा। यदि आप बाधाओं को स्पष्ट कर सकते हैं तो मैं और सहायता प्रदान कर सकता हूं।

संपादित करें - शैड का सुझाव एक संभावना है हालांकि जब तक उपयोगकर्ता कार्रवाई को ट्रिगर नहीं करता है तो ब्राउज़र पॉपअप को अवरुद्ध कर सकता है। फिर आपको यह स्पष्ट करना होगा कि पॉपअप स्वीकार्य है या नहीं।

0

इसमें एक आईफ़्रेम के साथ एक रैपर HTML पृष्ठ बनाएं, 100% x 100% पर आकार दिया गया। फिर कुछ जावास्क्रिप्ट में जोड़ें जो सेट अंतराल के बीच IFrame के src को बदलता है।

0

मुझे लगता है कि इसे gabbly.com की तरह काम करना होगा, जो अन्य वेबसाइटों में बेकार है और इसे अपनी सामग्री के साथ प्रदर्शित करता है।

एक बार जब आप दूसरी साइट पढ़ते हैं और इसे प्रदर्शित करने के लिए तैयार होते हैं, तो आप वास्तव में इसे "PHP में" नहीं कर पाएंगे; आपको एक HTML रीडायरेक्ट मेटा टैग भेजना होगा:

<meta HTTP-EQUIV="REFRESH" content="15; url=http://www.thepagecycler.com/nextpage.html"> 

या आप मेटा टैग के बजाय जावास्क्रिप्ट का उपयोग कर सकते हैं।

0

यह एक PHP स्क्रिप्ट में ऐसा करने योग्य नहीं है, जब तक आप रीडायरेक्ट को संपादित नहीं करना चाहते ....PHP एक बैक एंड टेक्नोलॉजी है; आपको जावास्क्रिप्ट या इस तरह की करने की आवश्यकता होगी।

जहां तक ​​आप जानते हैं, सबसे अच्छा आप अपने वेब सर्वर पर एक टेक्स्ट फ़ाइल बनाना और उस टेक्स्ट फ़ाइल के समय के आधार पर एक अलग HTTP पता लोड करना है, फिर ब्राउज़र को रीडायरेक्ट करें साइट उस पाठ फ़ाइल में मिली।

0

पहला समाधान जो दिमाग में कूदता है वह इसे फ्रेमसेट में करना है। फ्रेम में से एक को छुपाएं, और दूसरा प्रश्न वाले पृष्ठों को प्रदर्शित करें। छुपा फ्रेम से जावास्क्रिप्ट के साथ पेज संक्रमण ड्राइव करें।

function RefreshFrame() 
{ 
    parent.VisibleFrame.location.href = urlArray[i]; 
    i++; 

    if(i < urlArray.length) SetTimeout("RefreshFrame()", 20000); 
} 

var i = 0; 
var urlArray = ['http://google.com','http://yahoo.com', 'http://www.search.com']; 
RefreshFrame(); 

इस उदाहरण में जावास्क्रिप्ट hiddend फ्रेम में हो सकता है, और आप अपने दिखाई फ्रेम "VisibleFrame" नाम होगा।

अस्वीकरण: मैं सिर्फ टिप्पणी विंडो में इस कोड को लिखा था और यह

0

परीक्षण नहीं किया अनुरोध के पीछे सिद्धांत मूल रूप से एक "किओस्क" पीसी से विभिन्न प्रणालियों के लिए वेब पेज डैशबोर्ड के माध्यम से चक्र की क्षमता है। मैं एक डाटा सेंटर की देखरेख करता हूं और हमारे पास कई मॉनिटर सिस्टम हैं जो मुझे temps, system up time इत्यादि के लिए डैशबोर्ड देखने की इजाजत देते हैं। विचार एक पृष्ठ लोड करता है जो प्रत्येक पर निर्दिष्ट समय के लिए डैशबोर्ड से डैशबोर्ड तक चक्र होगा मैं, इस बोर्ड पर 1 मिनट, अगले बोर्ड पर 30 सेकंड, अगले 2 मिनट और इतने पर .. जावास्क्रिप्ट बिल्कुल स्वीकार्य है (हालांकि मुझे इसके साथ थोड़ा सा अनुभव है)। पसंद के मेरे माध्यमों PHP/एचटीएमएल हैं और मैं यह सिर्फ उन लोगों के साथ सफाई से ऐसा करने के लिए एक तरह से दिखाई नहीं दे रहा ..

18
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html lang="en"> 
<head> 
<title>Dashboard Example</title> 
<style type="text/css"> 
body, html { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; } 
iframe { border: none; } 
</style> 
<script type="text/javascript"> 
var Dash = { 
    nextIndex: 0, 

    dashboards: [ 
     {url: "http://www.google.com", time: 5}, 
     {url: "http://www.yahoo.com", time: 10}, 
     {url: "http://www.stackoverflow.com", time: 15} 
    ], 

    display: function() 
    { 
     var dashboard = Dash.dashboards[Dash.nextIndex]; 
     frames["displayArea"].location.href = dashboard.url; 
     Dash.nextIndex = (Dash.nextIndex + 1) % Dash.dashboards.length; 
     setTimeout(Dash.display, dashboard.time * 1000); 
    } 
}; 

window.onload = Dash.display; 
</script> 
</head> 
<body> 
<iframe name="displayArea" width="100%" height="100%"></iframe> 
</body> 
</html> 
+0

एक छोटी सी त्रुटि है - फ्रेम ["displayArea"]। Location.href = dashboard.url; फ्रेम ["displayArea"] पढ़ना चाहिए। Location.href = dashboards.url; –

+1

@Pete Michaud No :) – jensgram

+0

मैंने उपरोक्त इस कोड को अच्छी तरह से काम करने की कोशिश की है - लेकिन एक विशेष साइट पूरे पृष्ठ (वेबसाइटपल्स) का ताज़ा करने का कारण बनती है ताकि लूपिंग बंद हो जाए। पूरे ब्राउजर पेज पर आईफ्रेम में साइट को रोकने के लिए कोई तरीका? – Codek

1

मैं इस बात बनाने में कामयाब रहे। यह सुंदर नहीं है लेकिन यह काम करता है।

<?php 
# Path the config file, full or relative. 
$configfile="config.conf"; 
$tempfile="tmp.html"; 
# Read the file into an array 
$farray=file($configfile); 
# Count array elements 
$count=count($farray); 
if(!isset($_GET['s'])){ 
    $s=0; 
}else{ 
    $s=$_GET['s']; 
if($s==($count-1)){ # -1 because of the offset in starting our loop at 0 instead of 1 
    $s=0; 
}else{ 
    $s=$_GET['s']+1; # Increment the counter 
} 
} 
# Get the line from the array 
$entry=$farray[$s]; 
# Break the line on the comma into 2 entries 
$arr=explode(",",$entry);  
# Now each line is in 2 pieces - URL and TimeDelay 
$url=strtolower($arr[0]); 
# Check our url to see if it has an HTTP prepended, if it doesn't, give it one. 
$check=strstr($url,"http://"); 
if($check==FALSE){ 
    $url="http://".$url; 
    }   
# Trim unwanted crap from the time 
$time=rtrim($arr[1]);    
# Get a handle to the temp file 
$tmphandle=fopen($tempfile,"w"); 
# What does our meta refresh look like? 
$meta="<meta http-equiv=\"refresh\" content=\"".$time.";url=index.php?s=".$s."\">\n"; 
# The iframe to display 
$content="<iframe src =\"".$url."\" height=\"100%\" width=\"100%\"></iframe>"; 
# roll up the meta and content to be written 
$str=$meta.$content; 
# Write it 
fwrite($tmphandle,$str); 
# Close the handle 
fclose($tmphandle); 
# Load the page 
die(header("Location:tmp.html"));    
?> 

कॉन्फ़िग फ़ाइलें (यूआरएल, समय है कि पृष्ठ पर रहने के) की तरह दिखता है: google.com, 5 http://yahoo.com,10

-1

तरीकों से आप यह कर सकते हैं का एक समूह है, iv कई स्क्रिप्ट और उपकरण लिखा जेएस से रुबी

अंत में http://dashboardrotator.com का उपयोग करना बहुत आसान था। यह एक अच्छा सरल जीयूआई के साथ ब्राउज़र पुनरारंभ, स्मृति आवंटन और आकस्मिक खिड़की बंद करने के लिए संभाला।

संबंधित मुद्दे

 संबंधित मुद्दे