[英]How to use object defined in other JS file in Script#
我遇到了腳本#的問題。 我有一個ASP.NET頁面,它加載一個JavaScript文件並使用那里的對象。
var tracker = Piwik.getTracker(...);
現在我還有一個腳本#生成的JavaScript文件,該文件也包含在同一頁面中。 現在我想在Script#.cs文件中使用tracker
對象。
Type.InvokeMethod(tracker, "trackPageView");
不編譯:在當前上下文中不存在
Type.InvokeMethod("tracker", "trackPageView");
編譯但輸出:'tracker'.trackPageView();
有任何想法嗎?
在嘗試為第三方JavaScript庫發出代碼時,使用Script.Literal會起作用但通常應該避免。 使用Script#的重點是獲得編譯器支持,並且易於重構。
如果您計划在其他項目中使用Piwik,我建議您在Script#library中創建一些新類,或者甚至建議單獨的Script#Import庫。
關鍵是用屬性[Imported]標記這些類 - 這個屬性將阻止為類創建一個js文件,但會給你所有強大的輸入和重構的好處,使腳本#太棒了。
我不確定“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;
}
}
您現在可以在腳本#中編寫這樣的代碼
Tracker tracker = Piwik.GetTracker("whatever");//c#
它會發出看起來像這樣的javascript。
var tracker = Piwik.getTracker('whatever');//javascript
已經找到它: Script.Literal("tracker.trackPageView()");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.