gpt4 book ai didi

javascript - 如何在脚本中使用其他 JS 文件中定义的对象#

转载 作者:行者123 更新时间:2023-11-30 13:22:44 25 4
gpt4 key购买 nike

我在使用 Script# 时遇到问题。我得到了一个 ASP.NET 页面,它加载了一个 JavaScript 文件并使用了那里的一个对象。

var tracker = Piwik.getTracker(...);

现在我还有一个 Script# 生成的 JavaScript 文件,它也包含在同一页面中。现在我想在那个 Script# .cs 文件中使用 tracker 对象。

Type.InvokeMethod(tracker, "trackPageView");

不编译:在当前上下文中不存在

Type.InvokeMethod("tracker", "trackPageView");

编译但输出:'tracker'.trackPageView();

有什么想法吗?

最佳答案

尝试为第 3 方 javascript 库发出代码时,可以使用 Script.Literal,但通常应避免使用。使用 Script# 的全部意义在于获得编译器支持和轻松重构。

如果您计划在其他项目中使用 Piwik,我会建议在您的 Script# 库中创建一些新类,甚至是一个单独的 Script# Import 库。

关键是用 [Imported] 属性标记这些类 - 此属性将阻止为这些类创建 js 文件,但会为您提供所有强大的类型和重构优点,使 script# 如此美妙。

我不确定“Piwik”是什么,但我假设它是 javascript 库中的一个 Singleton 对象。创建以下两个类。

[Imported]//we don't want this to show up in the javascript source.
public sealed class Tracker
{
public void TrackElement()//this will write trackElement() in emitted js.
{

}


}


[Imported]//we don't want this to show up in the javascript source.
public static class Piwik
{
public static Tracker GetTracker(string item)//this becomes getTracker()
{
return null;
}


}

您现在可以在 Script# 中编写这样的代码

Tracker tracker = Piwik.GetTracker("whatever");//c#

它将发出如下所示的 javascript。

var tracker = Piwik.getTracker('whatever');//javascript

关于javascript - 如何在脚本中使用其他 JS 文件中定义的对象#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9631857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com