Вперед, новый API-интерфейс API-интерфейсов Intersection API - это то, что вы ищете. Он позволяет настроить обратный вызов, который вызывается всякий раз, когда один элемент, называемый целью, пересекает либо окно просмотра устройства, либо указанный элемент. Он доступен в последних версиях Chrome, Firefox и Edge. См. https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API для получения дополнительной информации.
Простой пример кода для наблюдения: нет переключения:
// Start observing visbility of element. On change, the
// the callback is called with Boolean visibility as
// argument:
respondToVisibility(element, callback) {
var options = {
root: document.documentElement
}
var observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
callback(entry.intersectionRatio > 0);
});
}, options);
observer.observe(element);
}
В действии: https://jsfiddle.net/elmarj/u35tez5n/5/
Я, в основном, пользователь R и начал играть на python, но возможное решение может заключаться в том, чтобы просто написать свой код на python в Rmarkdown
. Вы можете написать свой код python
и r
здесь взаимозаменяемо - вот отличный ресурс для начала работы https://cran.r-project.org/web/packages/reticulate/vignettes/r_markdown.html [ 114]
Если вы не знакомы с уценкой, я могу предоставить дополнительную информацию по этому вопросу.
---
title: "test"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
#engine to run python
library(reticulate)
```
```{python}
#python code R knows this is python code because you specified
# this above "```{python}"
import pandas
df = pandas.DataFrame({'foo':[1,2,3], 'bar':['one', 'two', 'three'], 'baz':['apple', 'banana', 'strawberry']})
print(df)
```
```{r}
#r code
#refer to get python objects in R code you have to type py$objectname
df2 <- py$df
class(df2)
#data.frame - python equivalent to pandas.DataFrame
```