2013-05-14 15 views
5

Diyelim ki "Tamamlandı" dizesi, bir web sayfasında bir yerde gösteriliyor, bu dizginin yalnızca javascript kullanarak var olup olmadığını öğrenmenin bir yolu var mı? Teşekkürler.Javascript: Bir web sayfasındaki bir metnin var olup olmadığını kontrol etme

+0

değil ne soran emin kullanabilir veya çalıştığı şey ... – Neal

+3

var Evet, ama muhtemelen yapmaya çalıştığınız şey için en iyi çözüm değildir. Tam sorununuzu ve çözmek için şimdiye kadar denediğiniz şeyi açıklamak daha yararlı olabilir. –

+3

Bu sitenin amacı, yazdığınız kodu düzeltmenize yardımcı olmaktır. İlk kısım kod yazmanız gerekiyor. Buluşmamızın yolu var. – Cam

cevap

24

Daha fazla ayrıntı yardımcı olabilir. Daha iyi yollar olabilir. Ama bu Sağladığınız iyi verilen hangi bilgilerin geçerli:

if (
    (
    document.documentElement.textContent || document.documentElement.innerText 
).indexOf('Done successfuly') > -1 
) { 
    // Do something... 
} 

Kimliği veya sınıf-adını biliyorsanız veya başka doğrudan metin içeren elemanı (örn h1#someHeading span ...) sonra muhtemelen arasan seçebiliyorsanız daha performanslı ve genel olarak daha temiz bir yaklaşım olacaktır.

EDIT Dikkat Edilmesi Gerekenler: Bu yaklaşım, SCRIPT ve STYLE etiketleri içindeki metni de alacaktır, bu muhtemelen istediğiniz gibi değildir. textContent ve innerText öğelerinin ikisi de tarayıcılarda çeşitli sıralara sahiptir. See this for more info.

if($("*:contains('Hello World')").length > 0) 
    console.log('yeah baby'); 

Bu şekilde ayrıca metnin konteyner elemanını verir:

+0

iyi çalışıyor, teşekkürler :) – Sam

+0

@ user2348365 Bu soruya cevap verirse, belirtmek için soldaki onay işaretini kullanın. Cevap vericiye teşekkür eder ve siteyi temiz tutar. – ahsteele

+0

güzel heyecan hareket! :)) – DrStrangeLove

3

Bunu yapmanın en kolay yolu jquery en seçici içerir kullanıyor. Böyle

+0

Yardımınız için teşekkür ederiz. – Sam

+5

FWIW, bu özel seçici Sizzle'yi (kendi desteklediği bir seçici değil) kullanacak ve sayfadaki her bir öğeyi seçecek ve ardından metin için * her * öğeyi kontrol edecek. Bu tam olarak ... verimli değil. – James

-1

deneyin .search() şey:

document.body.innerHTML.search("Done successfully!"); 

Veya bunun yerine innerHTML arasında textContent

+0

document.body adlı kullanıcının "eşleşme" özelliği yok, bunun yerine innerText (veya textContent) kullanmalısınız. –

+0

'body'' match' adlı bir işlev içermiyor. Regex ile kullanılan 'String.match' düşünüyor musunuz? Eğer öyleyse, 'vücut' kesinlikle bir ip değildir. –

+1

Üzgünüm çocuklar, kendi hatamı kendi başıma buldu ve başka bir çözüme dönüştürdüler – Milchkanne

İlgili konular