2016-01-05 4 views
8

पर उपलब्ध रिक्त स्थान का पता लगाने के वहाँ खाली स्थान का पता लगाने का कोई तरीका है,, जावास्क्रिप्ट का उपयोग?कैसे एक वेब पेज के भीतर पाठ या छवियों के बिना एक वेब पेज

दरअसल, कैसे निर्धारित करने के लिए बिंदु [एक्स, वाई], जैसे कि निम्न उदाहरण में (लाल रंग में चिह्नित) एक रिक्त क्षेत्र के भीतर है

enter image description here

संपादित करें: मैं अपने सवाल बनाना चाहते स्पष्ट है, मैं एक विस्तार है जो भरोसेमंद के रूप में या स्पैम रूप में खोज परिणामों को चिह्नित करने की अपेक्षा की निर्माण कर रहा हूँ, मैं अपने एक परिणाम के आइटम URL के पाठ के अंत में अंकन रखना चाहते हैं। मैं भी एक सामान्य तरीके से करना चाहते हैं, तो यह केवल गूगल वेब पेज में काम नहीं करेंगे। एक उदाहरण नीचे दिखाया गया है:

google web page

+0

आप किस मीट्रिक से गणना करते हैं कि कुछ 'खाली' है? आपके उदाहरण को देखते हुए, लाल बिंदु एक ही div तत्व का सबसे अधिक संभावना है कि प्रश्न का पाठ उस div के मूल तत्वों के साथ-साथ निहित है। –

+0

ऐसा लगता है कि आप केवल एचटीएमएल टैग के बीच व्हाइटस्पेस की तलाश में हैं, लेकिन मुझे यकीन नहीं है कि – SidOfc

+0

@ सिडनी लाइब्रैंड मैं व्हाइटस्पेस का पता लगाना चाहता हूं, भले ही यह ** टैग के अंदर ** हो। (जैसा कि मेरे उदाहरण में, टेक्स्टटेरा के भीतर) – happyOasis

उत्तर

-1
  • आप चौड़ाई और पेज की लंबाई के साथ एक मैट्रिक्स का निर्माण कर सकते हैं।
  • शून्य करने के लिए सभी मैट्रिक्स कोशिकाओं सेट करें।
  • डोम के सभी तत्वों को प्राप्त करें।
  • प्राप्त एक्स, वाई, चौड़ाई और प्रत्येक तत्व की ऊंचाई, इस लिंक पर मदद मिल सकती है Retrieve the position (X,Y) of an HTML element
  • मैट्रिक्स में तत्वों ड्रा

    for(k=0;k < dom_elements.length;k++) { 
        for(i=dom_elements[k].y;i < dom_elements[k].length;i++) { 
         for(j=dom_elements[k].x;j < dom_elements[k].width;j++) { 
    
          matrix[i][j] = 1 ; 
    
         } 
        } 
    } 
    
  • और अंत में जाँच करता है, तो matrix[i][j] शून्य हो जायेगा या 1

0

एक दृष्टिकोण खिड़की के स्क्रीनशॉट के साथ काम करना होगा।

आप एक HTML कैनवास तत्व को एक स्क्रीनशॉट लोड करने के लिए html2canvas तरह पुस्तकालयों का उपयोग कर सकते हैं।

इसके बाद, window.onclick पर, क्लिक किया के एक RGBA सरणी प्राप्त करने के लिए स्वत: event पैरामीटर का उपयोग समन्वय:

var pixelData = canvas.getContext('2d').getImageData(
    event.offsetX, 
    event.offsetY, 1, 1) 
.data; 

अब अगर सब (या कम से कम पहले तीन) 'pixelData रों आइटम बराबर 255 है, यह इसका मतलब है कि यह बिंदु सफेद है।

if (pixelData[0] == 255 && pixelData[1] == 255 && pixelData[2] == 255) { 
    // the clicked point is white, 
    // and if the background-color is white, 
    // it can be considered an empty point 
} 
बेशक

, नीचे की ओर आप में क्लिक साइट पर आप परीक्षण कर रहे हैं, या तत्व की पृष्ठभूमि का रंग की पृष्ठभूमि का रंग जानने की आवश्यकता है कि आप है।

+0

शायद सफेद की बजाय पृष्ठ पृष्ठभूमि पर इसकी तुलना करें? – Dropout

+1

अच्छा बिंदु। यदि आपके पास प्रासंगिक सीएसएस कोड तक आसान पहुंच है (उदाहरण के लिए यदि आप साइट के स्वामी हैं)। मजेदार हिस्सा यह है कि आप किसी भी साइट पर इस दृष्टिकोण का उपयोग कर सकते हैं, भले ही आपके पास पठनीय स्रोत कोड न हो। – remdevtec

2

आप के लिए परीक्षण कर सकते हैं इस तरह वास्तविक सफेद स्थान:

function isWhiteSpace(coords) { 
    var element = document.elementFromPoint(coords.x, coords.y); 
    var whitespace = $(document).add("body, html"); 
    return (whitespace.get().indexOf(element) > -1) ? true : false; 
} 

जहां coords साथ .x और .y गुण एक वस्तु है।

DEMO

document.elementFromPoint(), दस्तावेज here, "एक प्रयोगात्मक प्रौद्योगिकी" है, इसलिए मैं यह करने के लिए मेरे जीवन पर भरोसा नहीं होता।सभी लक्षित प्लेटफार्मों पर पूरी तरह से परीक्षण करें।


संपादित

सभी सफेद आप की तलाश का पूरा पता लगाने के लिए, isWhiteSpace() दो चरणों के पहले किया जाएगा। दूसरा चरण isVisualWhiteSpace() उदाहरण के लिए @ remdevtec के दृष्टिकोण के साथ कार्यान्वित किया जाएगा।

मेरे isWhiteSpace(coords) सस्ती है, तो आप इसे पहले और केवल तभी करेंगे जब यह महंगा परीक्षण के लिए गलत हो जाए। आप ||

var isWhite = isWhiteSpace(coords) || isVisualWhiteSpace(coords); 

की सुरक्षात्मक संपत्ति इस्तेमाल कर सकते हैं लेकिन अपने वास्तविक समस्या isVisualWhiteSpace() लिख दिया जाएगा। मैं इसके साथ मदद नहीं कर सकता।

+0

धन्यवाद, मैं केवल वास्तविक सफेद जगह नहीं चाहता हूं, अगर मैं div.container के अंदर है, या textarea के अंदर पैराग्राफ के बीच खाली स्थान भी है, तो मैं इसे भी पहचानना चाहता हूं। – happyOasis

+0

मुझे पता है और लगता है कि "दृश्य" सफेद स्थान का पता लगाने में तकनीकी समस्या नहीं होने पर आपके पास एक विशाल वैचारिक है। आइए मान लें कि आप काम करने के लिए @ remdevtec के दृष्टिकोण को प्राप्त कर सकते हैं, तो आप संभावित रूप से "अपरिपक्व" और "कब्जे वाले" सफेद स्थान के बीच अंतर करना चाहते हैं। उदाहरण के लिए, पाठ युक्त एक div पर विचार करें - आप जिस सफेद को पहचानना चाहते हैं और सफेद के बीच सफेद, जिसमें "ओ" या "पी" जैसे सफेद वर्ण शामिल हैं, के बीच आप कैसे अंतर करेंगे? आपने खुद को एक असंभव कार्य निर्धारित कर दिया हो सकता है। –

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