From 0e907e4f5ae49bc902fcd69384f29e1f1a0dbd5d Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Fri, 2 May 2025 19:55:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/data/entities/BaseSource.kt | 2 +- .../io/legado/app/ui/rss/read/ReadRssActivity.kt | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/entities/BaseSource.kt b/app/src/main/java/io/legado/app/data/entities/BaseSource.kt index a7229cd19..f0cb8c7b7 100644 --- a/app/src/main/java/io/legado/app/data/entities/BaseSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BaseSource.kt @@ -235,12 +235,12 @@ interface BaseSource : JsExtensions { @Throws(Exception::class) fun evalJS(jsStr: String, bindingsConfig: ScriptBindings.() -> Unit = {}): Any? { val bindings = buildScriptBindings { bindings -> - bindings.apply(bindingsConfig) bindings["java"] = this bindings["source"] = this bindings["baseUrl"] = getKey() bindings["cookie"] = CookieStore bindings["cache"] = CacheManager + bindings.apply(bindingsConfig) } val sharedScope = getShareScope() val scope = if (sharedScope == null) { diff --git a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt index 9955768d9..d2b26a9db 100644 --- a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt @@ -25,7 +25,7 @@ import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.size import androidx.lifecycle.lifecycleScope -import com.script.rhino.RhinoScriptEngine +import com.script.rhino.runScriptWithContext import io.legado.app.R import io.legado.app.base.VMBaseActivity import io.legado.app.constant.AppConst @@ -473,11 +473,13 @@ class ReadRssActivity : VMBaseActivity val source = viewModel.rssSource val js = source?.shouldOverrideUrlLoading if (!js.isNullOrBlank()) { - val result = RhinoScriptEngine.runCatching { - eval(js) { - put("java", rssJsExtensions) - put("url", url.toString()) - }.toString() + val result = kotlin.runCatching { + runScriptWithContext(lifecycleScope.coroutineContext) { + source.evalJS(js) { + put("java", rssJsExtensions) + put("url", url.toString()) + }.toString() + } }.onFailure { AppLog.put("url跳转拦截js出错", it) }.getOrNull()