Есть ли способ сделать оператор IF на основе текстовой строки внутри IFRAME? - PullRequest
0 голосов
/ 08 марта 2020

В настоящее время у меня есть веб-страница, которая встраивает следующий кадр:

<iframe src="https://docs.google.com/spreadsheets/u/0/d/1P9DhWOHcl14Y7-P5wCxTm-sUceckGquPoOobO75XhvM/htmlembed/sheet?gid=630924986&single=true" frameborder="0" width="393px" height="385px" style="float:centre" id="MyFrame"></iframe>

Содержимое ячеек изменяется на основе формул. Я пытаюсь найти способ, который бы проверял, содержит ли строка одну из ячеек (в данном случае, ячейку, содержащую «Foo», перечисленную с классом «S2» ( см. Здесь )). В зависимости от результата, он выводит на консоль разные вещи. Например:

if <"Cell from inside the IFRAME with class S2"> = "stringtosearch"
  //found
  console.log("The cell contains stringtosearch!")
else
  //not found
  console.log("The cell does not contain stringtosearch. :( ")

Буду признателен за любую помощь в достижении этого! Я верю, что это можно сделать с помощью jQuery, но я не уверен в том, как лучше это сделать. Я все еще новичок в JS.

Примечание. Мне нужно встроить его в расширение Chrome, поэтому я не могу использовать опцию извлечения API Google Sheets и поиска по ней, что Кстати, как Chrome Расширения не позволяют встроенные скрипты.

Спасибо!

1 Ответ

0 голосов
/ 08 марта 2020

Как и @DarrenH, исключенный из комментариев, у вас есть проблема междоменного iframe. Если ваш iframe был в том же домене, вы могли бы извлечь td из table следующим образом:

jQuery:

var filteredContents = $('#MyFrame').contents().find('.s2');
if (filteredContents.text() == 'stringtosearch') {
   //found
   console.log("The cell contains stringtosearch!")
}
else {
   //not found
   console.log("The cell does not contain stringtosearch. :( ")
}

Ваниль JavaScript:

var iframe = document.getElementById("MyFrame");
var element = iframe.contentWindow.document.getElementsByTagName("td");
for (int i = 0; i < element.length; i++) {
    if (element[i].classList.contains('s2')) {
       if (element[i].innerText == 'stringtosearch') {
           //found
           console.log("The cell contains stringtosearch!")
       }
       else {
           //not found
           console.log("The cell does not contain stringtosearch. :( ")
       }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...